알고리즘/백준
-
[백준 1697] 숨바꼭질알고리즘/백준 2019. 4. 22. 02:29
Queue를 사용한 BFS의 개념을 알고 있다면쉽게 풀 수 있는 문제이다. 수빈이가 동생을 찾기 위해서 몇 번을 이동하는지 구하는 문제인데,이동 할 수 있는 경로가 오직 세 가지 경우( now = 현재위치)1. now - 12. now + 13. now * 2밖에 없어서 배열을 사용하여 간단하게 구현이 가능하다. (이때 수빈이와 동생의 위치가 같을 경우 '0'을 출력하는 경우를 예외로 처리해야한다) 출처 : https://www.acmicpc.net/problem/1697 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷..
-
[백준 6603] 로또알고리즘/백준 2019. 4. 21. 20:57
처음에 순열문제라서 간단하게 STL의 next_permutation을 사용하면 되는 줄 알았지만, (수정. 사용할 수 있습니다) DFS나 재귀 혹은 반복을 사용하면 되는 문제였다. 간단하게 반복문을 사용하여, 풀은 문제이다. (수정)문제풀이 1. (재귀호출)문제풀이 2. (next_permutation을 사용한 조합) 출처 : https://www.acmicpc.net/problem/6603 문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다.로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다.예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고..
-
[백준 10971] 외판원 순회2알고리즘/백준 2019. 4. 17. 21:53
정답률이 높지는 않았지만, 그렇다고 어렵지는 않았던 문제입니다. C++에서는 next_permutation을 사용하면 쉽게 구현할 수 있는 문제입니다. 4 0 10 15 20 5 0 9 10 6 13 0 12 8 8 9 0 인 경우 크기가 n= 4인 임시 벡터를 사용하여 모든 경우의 수를 비교하게 하였습니다. 마지막 노드에서 시작 노드로 돌아올 때는 시작 노드 start와 마지막 n-1 인덱스의 가중치를 더하여 가장 작은 비용을 출력하도록 구현하였습니다. 출처 : https://www.acmicpc.net/problem/10971 문제 외판원 순회 문제는 영어로 Traveling Salesman problem (TSP) 라고 불리는 문제로 computer science 분야에서 가장 중요하게 취급되는 문..
-
[백준 1107] 리모컨알고리즘/백준 2019. 3. 29. 03:06
생각보다 정답률이 낮아 깜짝 놀랐지만, 문제 풀면서.. 왜 낮은지 이해가 된 문제 중간에 오답이 떠서 헤맨 문제입니다. ...더보기 출처 : https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 주어지며, 같은 버튼이 여러번 주어지는 경우는 없다. www.acmicpc.net 문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다...
-
[백준 1476] 날짜 계산알고리즘/백준 2019. 3. 29. 02:07
쉬운 문제이다. 간단하게 날짜 범위를 생각하여, 계산하고 풀면 충분히 정답인 문제 출처 : https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19) 우리가 알고있는 1년은 준규가 살고있는 나라에서는 1 1 1로 나타낼 수 있다. 1 www.acmicpc.net #include using namespace..
-
[백준 1517] 버블 소트알고리즘/백준 2019. 3. 21. 18:14
중간에 논리오류가 발생했지만, 수정 뒤에 정상적으로 출력이 가능하다.어디가 잘못된 건지, 곰곰히 생각해봐도 아직 모르겠지만, 중간에 바꾼건 사실 ans += (long long)(mid - i + 1);이 부분이 전부이긴하다. 출처 : https://www.acmicpc.net/problem/1517 문제 N개의 수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에 대해서 버블 소트를 수행할 때, Swap이 총 몇 번 발생하는지 알아내는 프로그램을 작성하시오. 버블 소트는 서로 인접해 있는 두 수를 바꿔가며 정렬하는 방법이다. 예를 들어 수열이 3 2 1 이었다고 하자. 이 경우에는 인접해 있는 3, 2가 바뀌어야 하므로 2 3 1 이 된다. 다음으로는 3, 1이 바뀌어야 하므로 2..
-
[백준 1074] Z알고리즘/백준 2019. 3. 21. 02:14
분할정복 문제이다. "Z" 방향으로 탐색을 하면서, 주어진 좌표가 몇 번째에 탐색이 되는지 출력하는 문제이다. 0 1 2 3 이라고 하면, 0 -> 1 -> 2 -> 3 순으로 탐색이 되며, 분할 탐색을 해가면서 각 좌표마다 입력 값과 비교하여, 결과를 출력한다. 출처 : https://www.acmicpc.net/problem/1074 문제 한수는 2차원 배열 (항상 2^N * 2^N 크기이다)을 Z모양으로 탐색하려고 한다. 예를 들어, 2*2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다.만약, 2차원 배열의 크기가 2^N * 2^N라서 왼쪽 위에 있는 칸이 하나가 아니라면, 배열을 4등분 한 후에 (크기가 같은 2^(N-1)로) 재귀적으로 순서대로 방문한다..