코딩 테스트/백준 강의 기초편
DP) 11057.오르막 수
문제 : https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 규칙 수의 자리가 오름차순을 이루는 수 인접한 수가 같아도 오름차순으로 친다. 수는 0으로 시작할 수 있다. 목표 첫째 줄에 길이가 N인 오르막 수의 개수를 10,007로 나눈 나머지를 출력한다. Solution d[i][j] = 길이가 i이고 마지막 수가 j인 오르막수의 개수 점화식 : d[i][j] = ∑d[i-1][k] ( 0
DP) 1149.RGB 거리
문제 1149. RGB 거리 [1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net](https://www.acmicpc.net/problem/1149) 규칙 집을 빨강, 파랑, 초록 중 하나로 칠한다. 모든 이웃은 같은 색으로 칠할 수 없다. 집 i의 이웃은 i-1, i+1 이고, 첫 집과 마지막 집은 이웃이 아니다. 목표 각 집을 각 색으로 칠하는 비용이 주어질 때, 모든 집을 칠하는 비용의 최솟값을 구하라. Solution a[i][j] : i번 집을 j번 색으로 칠하는 비용 d[i][j..
구현) 1917.정육면체 전개도
문제 : https://www.acmicpc.net/problem/1917 1917번: 정육면체 전개도 세 개의 입력 데이터가 주어지며, 각각의 입력 데이터는 여섯 개의 줄로 이루어져 있다. 각 데이터는 여섯 개의 줄에 걸쳐 여섯 개의 숫자가 빈 칸을 사이에 두고 주어진다. 숫자는 0 또는 1로 이 www.acmicpc.net # 정육면체 전개도는 총 11가지 cubes = [ [[1,0,0,0], [1,1,1,1], [1,0,0,0]], [[0,1,0,0], [1,1,1,1], [1,0,0,0]], [[0,0,1,0], [1,1,1,1], [1,0,0,0]], [[0,0,0,1], [1,1,1,1], [1,0,0,0]], [[0,1,0,0], [1,1,1,1], [0,1,0,0]], [[0,0,1,0]..
구현)16931.겉넓이 구하기
문제 출처 : https://www.acmicpc.net/problem/16931 16931번: 겉넓이 구하기 크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어 www.acmicpc.net 풀이 # 솔루션 : 3차원으로 생각하자. 2차원에서 dx,dy, nx,ny 를 쓰는 것처럼, 3차원으로 dx,dy,dz, nx,ny,nz를 써서 해결하자 n,m = map(int,input().split()) a=[] for i in range(n): a.append(list(map(int,input().split()))) ans=0 dx=[1,-1,0,0,0,0] dy..
구현)2290.LCD Test
문제 출처 : https://www.acmicpc.net/problem/2290 2290번: LCD Test 첫째 줄에 두 개의 정수 s와 n이 들어온다. (1 ≤ s ≤ 10, 0 ≤ n ≤ 9,999,999,999)이다. n은 LCD 모니터에 나타내야 할 수 이며, s는 크기이다. www.acmicpc.net 솔루션 : 1. 각 패널별, 좌우가 나눠져 있으면 좌우로 나눠 총 7개의 경우의 수로 나눠 풀었다. 2. 각 숫자가 각 패널의 도형이 필요하면 그것을 취한 뒤 최종적으로 숫자 형태로 완성된다. import sys input = sys.stdin.readline s,tgs = map(str,input().split()) s=int(s) hrz = s+2 ver = 2*s+3 h='-' v='|' ..
구현) 14503. 로봇 청소기
문제 출처 : https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 풀이 # 피드백 # 1. 종료 조건의 경우의 수를 늘 먼저 쓰고, 그 나머지 경우에 프로세스를 전개하자. n,m = map(int,input().split()) r,c,dir = map(int,input().split()) board=[] dx=[-1,0,1,0] dy=[0,1,0,-1] for i in range(n): board.append(list(map(int,input()..