본문 바로가기

에러 잡기/문제 풀이8

COS PRO 1차 5번 - 소용돌이 수 python while문에서 이동 방향을 바꿔가며 대각선일 때 값을 더하는 풀이도 있지만 n이 짝수/홀수일 경우 규칙을 발견해 풀었다. 제공 답변과 n=100일 때까지 출력이 같음을 확인함. def solution(n): answer = 0 # n이 짝수면 2, 6, 6, 10, 10, ... (처음엔 하나, 두번씩, 4 더하며) -> 끝에서부터 answer에 더함 # n이 홀수면 4, 4, 8, 8, .., (처음엔 두개, 두번식, 4 더하며) -> 끝에서부터 answer에 더함 if n % 2 == 0: curNum = n * n - 1 minusNum = 2 cnt = 1 while (curNum > 0): cnt += 1 answer += curNum curNum -= minusNum if cnt == 2: .. 2022. 4. 11.
백준 2193 이친수 www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 아래와 같이 풀었는데 틀렸다고 뜸. 가장 큰 수인 90을 넣어봤더니 음수가 나왔다. 배열타입을 long long int로 고치니 해결됨. #include using namespace std; long long int d[91][2]; int main() { int n; cin >> n; if (n == 1) { cout 2021. 4. 15.
백준 13913 숨바꼭질4 www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 1697 숨바꼭질 문제에 경로 출력이 포함된 문제. 초반에 구현한 코드는 아래와 같다. 큐 q에 새로운 원소를 넣을 때 경로를 포함한 temp2큐를 함께 넣어주었다. #include #include using namespace std; int n, k; int visited[200001]; int main() { cin >> n >> k; if (n == k) { cout 2021. 4. 9.
백준 12851 숨바꼭질 2 www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 숨바꼭질1과는 다르게 '가장 빠른 시간으로 찾는 방법이 몇 가지인지'도 출력해야 하기 때문에, 큐에 넣을 때 visited 체크를 하지 않고 pop할 때 방문처리한다. 수빈이와 동생의 처음 위치가 같을 경우 0 1 을 출력하고 끝낸다. 이동 시간이 이미 최소 이동 시간보다 큰 경우는 큐에 넣지 않았다. #include #include using namespace std; b.. 2021. 4. 3.
백준 16953 A->B www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net A, B 범위가 10^9길래 visited 배열은 두지 않고 (이때부터 실패를 예감함..) bfs 구현했는데, 역시 틀렸다. 순서를 반대로 생각하니 풀렸다. A를 B로 만드는 것이 아니라, B를 A로 만들 수 있는지 확인하는 것. ex) a=2, b=162라면 162는 2로 나눠질 뿐 뒤에서 1을 뺄 수는 없으므로 2로 나누면 81, 1을 빼면 8, 2로 나누면 4, 2 #include #include using namespace std; void bfs(int a, int b) { queue q; q.push({ b, 1 }); wh.. 2021. 3. 30.
백준 7562 나이트의 이동 www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 쉬운 문제였는데 테스트 케이스 중간에 멈추길래 뭔가 했는데 그래프를 초기화하지 않아서 그랬던 것이었음.. 테스트케이스 여러번 돌릴 땐 초기화를 잘 하자 #include #include using namespace std; int l, ax, ay, bx, by, sum; int graph[300][300]; // 나이트의 이동 가능 범위 int dx[8] = { 1, 1, 2, 2, -1, -1, -2, -2 }.. 2021. 3. 26.