일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백트래킹
- 재귀
- 유니티
- Unreal Engine 5
- 자료구조
- Team Fortress 2
- 백준
- 그리디 알고리즘
- 시뮬레이션
- 문자열
- BFS
- VR
- 투 포인터
- ue5
- 수학
- 우선순위 큐
- 유니온 파인드
- 트리
- 브루트포스
- 다익스트라
- 다이나믹 프로그래밍
- 구현
- 정렬
- 스택
- 그래프
- 알고리즘
- 누적 합
- c++
- DFS
- XR Interaction Toolkit
- Today
- Total
목록알고리즘 (528)
1일1알

입력받은 문자열이 팰린드롬 이면 0, 문자 하나를 제거해서 팰린드롬이면 1, 둘 다 아니면 2를 출력하는 문제이다. while문에서 문자열의 시작과 끝을 거리를 좁혀가면서 비교하면서 시작 지점이 끝 지점보다 커졌을 때까지 계속 같으면 팰린드롬이고, 만약 다르다면 시작 지점만 하나 늘리거나 끝 지점만 하나 줄여서 다시 비교를 한다. 여기서 하나 이상이 팰린드롬이라면 유사 팰린드롬이고, 둘 다 팰린드롬이 아니라면 그냥 일반 문자열이다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long lon..

최소한의 알파벳으로 팰린드롬을 만드는 문제이다. (앞에서부터 읽는 것과 뒤에서부터 읽는 것이 같은 문자열) 주어진 문자열을 탐색하는데, 시작 지점을 1씩 늘려가면서 만약 팰린드롬이라면 문자열의 길이에 시작 지점을 더해서 문제를 해결하였다. 그림으로 그려보면 그림을 좀 못 그린 것 같긴 한데 설명을 해보자면, 처음 a와 e는 같지 않으므로 팰린드롬이 될 가능성이 없다. 그래서 시작 지점을 1 늘려준다. 그때 b와 e도 같지 않으므로 또 늘려준다. 이렇게 진행하다가 3번 인덱스 e에 도착했을 때 마지막 e와 같으므로 팰린드롬일 가능성이 있기 때문에 계속 검사를 해준다. 검사를 마쳤을 때 팰린드롬이 맞았기 때문에 문자열의 길이 8과 검사를 시작했던 인덱스 3을 더하면 11이 된다. ( abcefgfe + cb..

n개의 재료가 있는데, 각 재료에는 신맛과 쓴맛이 수치로 존재한다. 1개 이상의 재료를 사용해서 음식을 만드는데, 신맛과 쓴맛의 차이의 최솟값을 구하는 문제이다. 신맛은 재료들의 각각의 신맛의 수치를 곱한 값이 되고, 단맛은 재료들의 단맛을 더한 값이 된다. 처음에 문제를 분석할 때 신맛이 나는 재료와 단맛이 나는 재료가 분리되어 있다고 착각해서 조금 헤맸다. 문제를 다시 읽어보니 하나의 재료에 단맛과 신맛이 같이 있다는 것을 깨달았다. 그러고 나니 문제를 해결하는 방법이 쉽게 떠올랐다. 각각의 재료들의 신맛, 단맛 정보를 pair로 저장해서 벡터에 하나씩 삽입하고 벡터를 재귀적으로 돌면서 신맛과 단맛의 최솟값을 탐색하였다. 신맛이든 단맛이든 1, 2, 3이나 2, 3, 1이나 같은 값이 나오기 때문에 ..

경비원의 위치가 주어지고, 상점들의 위치가 주어졌을 때, 경비원의 위치에서 상점의 위치까지의 최솟값들을 구해서 더하는 문제이다. 내가 해결한 방법은 구조체를 이용하여 입력받은 상점들의 위치를 저장하고 만약 위치가 1이나 2 (북쪽, 남쪽) 이면 왼쪽 꼭짓점까지의 거리와 오른쪽 꼭짓점까지의 거리를 저장하고, 위치가 3이나 4(서쪽, 동쪽) 이면 위쪽 꼭짓점까지의 거리와 아래쪽 꼭짓점까지의 거리를 저장하였다. 그리고 상점의 위치정보를 저장한 구조체를 벡터에 담고 벡터를 하나씩 순환하면서 각각의 상황마다 경비원과 상점의 거리의 최솟값을 구해서 더해주면서 문제를 해결하였다. #include #include #include #include #include #include #include #include #incl..

BST 탐색으로 해결할 수 있는 문제이다. 지도의 모든 부분을 검사하면서 만약 L인 지역이면 그곳부터 BST탐색을 시작하고, 가장 먼 곳 까지의 거리를 구하고 구한 거리들 중 가장 큰 값을 찾으면 해결할 수 있다. 땅을 방문했는지 안했는지 검사하는 visited 벡터를 만들었고, 새로 검사를 시작할 때는 visited 벡터를 초기화 해주었다. 그리고 BST탐색을 하기 위한 큐에는 pair을 사용해서 안쪽에 있는 pair는 좌표 정보를, int는 거리 정보를 저장하면서 탐색을 하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include using na..

백준에서는 입력이 파일로 들어오기 때문에 EOF를 읽게 되면 입력이 종료된다고 한다. 그래서 while (getline(cin, str))을 사용하면 된다. 맵 자료구조는 자동으로 정렬이 되기 때문에 입력받은 정보를 map를 이용해 value값을 증가시켜주기만 하면 된다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); map m; ..