[BOJ/백준] 20047 동전 옮기기 - 자바
·
💻 알고리즘/PS
문제 문제풀이 입력받은 S 배열에서 두 동전을 제외한 배열을 새로 만들고 선택받은 두 동전은 또 따로 temp 배열로 만들어서 T 배열과 비교할 때 사용했다. find 함수를 이용해서 조건에 따라 재귀적으로 풀었다. find 함수 1. s 배열 index 값 + 두 동전 사용 횟수 == n-1이면 탐색 완료, 1을 return 2. index가 n-2인 경우 -> T로 만들 수 없다. 0을 return (ex) oxo 에서 x,o를 뽑아서 oox를 만드는 경우) 3. s[index] == t[index+cnt] 이면 index를 증가시켜서 다음 값을 비교한다. 4. 두 동전 사용 횟수가 2인 경우; 위에서 해당하는 경우가 없었기에 선택한 동전을 새로 넣어 변화를 주어야 하는데 그 럴 수 없으므로 0 re..
[BOJ/백준] 19538 루머 - 파이썬
·
💻 알고리즘/PS
문제 https://www.acmicpc.net/problem/19538 19538번: 루머 예제 1 0분 : 최초 유포자($1$, $6$번 사람)가 루머를 생성한다. 1분 : $1$번 사람은 $2$, $3$번 사람에게 루머를 퍼뜨린다. $2$번 사람은 주변인 $2$명 중 $1$명이 루머를 믿고 있어 루머를 믿게 된다. $3$ www.acmicpc.net 문제풀이 2개의 덱을 사용해서 풀었다. 처음 유포자를 시작으로 새로 루머를 믿는 사람들을 start 덱에 추가하여 덱이 빌 때까지 탐색을 진행했다. 새로 루머를 믿는 사람들의 time 값을 업데이트 해 줄 때에는 즉시 업데이트 해주는 것이 아니라, 따로 que라는 덱에 추가해서 해당 탐색이 끝난 이후에 업데이트를 해주었다. 즉시 업데이트 하는 경우, 다..
[BOJ/백준] 1074 Z - 파이썬
·
💻 알고리즘/PS
문제 https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 문제풀이 재귀를 사용해서 푸는 문제이다. 처음 (2^N)*(2^N) 크기의 2차원 배열에서부터 4사분면으로 나누어 길이를 반씩 줄여나간다. 분할된 네 공간 중 ( r , c )가 어느 곳에 속하는지 확인한다. 속하지 않는 부분에 대해서는 그 크기만큼 ans 값을 더해준다. x==r 이고 y==c 이면 ans를 출력하고 종료한다. 코드 import sys input=sys.stdin...
[BOJ/백준] 14891 톱니바퀴 - 파이썬
·
💻 알고리즘/PS
문제 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제풀이 n번 바퀴의 2번 index는 n+1번 바퀴의 6번 index와 인접하고 n번 바퀴의 6번 index는 n-1번 바퀴의 2번 index와 인접한다. 이 두 값을 먼저 update 한 후에, a번을 기준으로 왼쪽/오른쪽으로 2개의 for문을 통해 나머지 바퀴들을 탐색한다. a번과 바로 인접한 바퀴의 경우, a번과 반대 방향으로 돌아가야 하기 때문에 b에 -1을 곱해준 값을, 그 다..