[12100] 2048 (Easy)
·
Coding Test/Implement
12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 분석 네 방향으로 dfs 를 통해 다섯번 밀면서 보드의 최댓값 갱신 풀이 """ 2048 게임은 보드의 크기가 N×N 이다. 보드의 크기와 보드판의 블록 상태가 주어졌을 때, 최대 5번 이동해서 만들 수 있는 가장 큰 블록의 값 블록이 추가되는 경우는 없다 이동하려고 하는 쪽의 칸이 먼저 합쳐진다. 예를 들어, 위로 이동시키는 경우에는 위쪽에 있는 블록이 먼저 합쳐지게 된다 최대 5번 이동시켜서 얻을 수 있는 가장 큰 블록을 출력한다...
[18808] 스티커 붙이기
·
Coding Test/Implement
18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 풀이 """ 가장 위, 왼쪽부터 붙임 자리없으면 시계방향으로 90도 회전 0도, 90도, 180도, 270도 회전해도 없으면 버림 노트북 세로, 가로 N,M(1 ≤ M ≤ 40), 스티커 개수 K(1 ≤ K ≤ 100) i번째 스티커가 인쇄된 모눈종이의 행의 개수와 열의 개수를 나타내는 Ri(1 ≤ Ri ≤ 10)와 Ci(1 ≤ Ci ≤ 10) Ri개의 줄에는 각 줄마다 모눈종이의 각 행을 나타내는 Ci개의 정수가 한 개 첫째 줄에 주어진 스티커들을 차례대로 붙였을..
[15683] 감시 (DFS, 백트래킹, 브루트포스)
·
Coding Test/Implement
15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 분석 cctv 방향 배열 생성 dfs를 통해 격자 탐색 격자를 복사한 뒤, cctv별 방향으로 연속 탐색 후 dfs 수행 그래프 복귀 (방문 처리 초기화) dfs 그래프 초기화 경로탐색(DFS) [1260번] DFS, BFS 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호 kar..
[2004] 조합 0의 개수
·
Coding Test/Math
2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net 분석 조합 = nCm = n!/(m!*(n-m)!) 조합을 구해서 답을 내는 것이 아닌 조합 내의 0의 개수를 구하는 문제 끝자리가 0이라는 것은 10의 배수 10의 개수 = 2의 개수와 5의 개수 중 작은 것의 개수 (2와 5가 짝을 이뤄 10이되기 때문) n!가 가지고 있는 2의 개수 - m!이 가지고 있는 2의 개수 - (n-m)!이 가지고 있는 2의 개수 n!가 가지고 있는 5의 개수 - m!이 가지고 있는 5의 개수 - (n-m)!이 가지고 있는 5의 개수 중에 작은 수 풀이 """ n,m
[1057] 토너먼트
·
Coding Test/Math
1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 풀이 """ N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 한다. 만약 그 라운드의 참가자가 홀수명이라면, 마지막 번호를 가진 참가자는 다음 라운드로 자동 진출한다. 번호를 다시 배정받은 후에 한 명만 남을 때까지 라운드를 계속 한다. 일단 김지민과 임한수는 서로 대결하기 전까지 항상 이긴다고 가정한다. 1라운드에서 김지민의 번호와 임한수의 번호가 주어질 때, 과연 김지민과 임한수가 몇 라운드에서 대결하는지 출력 만약..
[1038] 감소하는 수 (백트래킹, 조합, 재귀)
·
Coding Test/Math
1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net 분석 숫자를 덧붙이는 방법으로 한자리, 두자리, 세자리,... 의 감소하는 수 리스트 생성 재귀 n = int(input()) nums = [] def add(idx, num): # 자리수에 따라 증가 if idx == 1: nums.append(num) else: for i in range(num % 10): # 앞자리보다 작은 숫자들만 이어붙이기 add(idx-1, num*10 + i) for i in range(1, 11): for j in ..