Algotithms
-
문제 NxN 격자에 M개의 지뢰가 숨겨져 있다. 격자판의 어느 지점을 선택했을 때 지뢰가 있으면 플레이어가 진다. 지뢰가 없는 지점을 선택하면 인접한 8개의 칸에 지뢰가 몇 개 있는 지 0-8 사이의 숫자로 알려준다. 일부가 플레이된 게임의 정보가 주어질 때, 해당하는 격자 출력하기 온점(.)은 지뢰가 없는 지점, 별(*)은 지뢰가 있는 지점, 이미 열린 칸은 영소문자 x로, 열리지 않은 칸은 온점(.)으로 표시한다. 만약 지뢰가 있는 칸이 열렸다면 지뢰있는 모든 칸이 별표(*)로 표시되고 다른 지점들은 온점(.)이어야 한다. 1
[백준] 4096 지뢰찾기문제 NxN 격자에 M개의 지뢰가 숨겨져 있다. 격자판의 어느 지점을 선택했을 때 지뢰가 있으면 플레이어가 진다. 지뢰가 없는 지점을 선택하면 인접한 8개의 칸에 지뢰가 몇 개 있는 지 0-8 사이의 숫자로 알려준다. 일부가 플레이된 게임의 정보가 주어질 때, 해당하는 격자 출력하기 온점(.)은 지뢰가 없는 지점, 별(*)은 지뢰가 있는 지점, 이미 열린 칸은 영소문자 x로, 열리지 않은 칸은 온점(.)으로 표시한다. 만약 지뢰가 있는 칸이 열렸다면 지뢰있는 모든 칸이 별표(*)로 표시되고 다른 지점들은 온점(.)이어야 한다. 1
2023.10.24 -
문제 작업 N개와 각 작업마다 걸리는 시간이 정수로 주어진다. K번 작업은 K-1번 이하의 작업 중 선행 관계의 작업을 가질 수도 있다. 그 때 모든 작업을 완료하기 위한 최소 시간 구하기 3
[백준] 2056 작업문제 작업 N개와 각 작업마다 걸리는 시간이 정수로 주어진다. K번 작업은 K-1번 이하의 작업 중 선행 관계의 작업을 가질 수도 있다. 그 때 모든 작업을 완료하기 위한 최소 시간 구하기 3
2023.10.23 -
문제 N개의 문제가 있다. 해결한 문제는 파란색(B), 해결하지 못한 문제는 빨간색(R)으로 표현한다. 문제를 칠할 때는 연속된 임의의 문제들을 선택하고, 선택된 문제들을 전부 원하는 같은 색으로 칠한다. 가장 효율적으로 색을 칠하는 최소 작업 횟수 구하기 1 전체를 한 번에 첫 문제와 같은 색으로 칠하므로 1로 시작한다. 만약 색이 달라지는 구간이 나오면 다시 칠해야 하므로 cnt + 1 해준다. N = int(input()) paint = input() rb = 'B' if paint[0] == 'R' else 'R' cnt = 1 for i in range(1, N) : if paint[i] == rb and paint[i-1] != rb : cnt += 1 print(cnt) References ..
[백준] 20365 블로그2문제 N개의 문제가 있다. 해결한 문제는 파란색(B), 해결하지 못한 문제는 빨간색(R)으로 표현한다. 문제를 칠할 때는 연속된 임의의 문제들을 선택하고, 선택된 문제들을 전부 원하는 같은 색으로 칠한다. 가장 효율적으로 색을 칠하는 최소 작업 횟수 구하기 1 전체를 한 번에 첫 문제와 같은 색으로 칠하므로 1로 시작한다. 만약 색이 달라지는 구간이 나오면 다시 칠해야 하므로 cnt + 1 해준다. N = int(input()) paint = input() rb = 'B' if paint[0] == 'R' else 'R' cnt = 1 for i in range(1, N) : if paint[i] == rb and paint[i-1] != rb : cnt += 1 print(cnt) References ..
2023.10.23 -
문제 연속하는 두 파일을 합치는데 필요한 비용은 두 파일 크기의 합이다. 파일이 K개 주어질 때 파일을 하나로 합칠 때 필요한 최소비용 구하기 3 단, 파일이 하나인 경우 제외 pypy로 통과 for _ in range(int(input())) : K = int(input()) f = [0] + list(map(int, input().split())) # f 누적합 for i in range(1, K+1) : f[i] += f[i-1] # dp[i][j] : i~j 파일을 합치는데 최소 비용 dp = [[1e9]*(K+1) for _ in range(K+1)] for i in range(1, K) : dp[i][i] = f[i]-f[i-1] dp[i][i+1] = f[i+1]-f[i-1] dp[K][K]..
[백준] 11066 파일 합치기문제 연속하는 두 파일을 합치는데 필요한 비용은 두 파일 크기의 합이다. 파일이 K개 주어질 때 파일을 하나로 합칠 때 필요한 최소비용 구하기 3 단, 파일이 하나인 경우 제외 pypy로 통과 for _ in range(int(input())) : K = int(input()) f = [0] + list(map(int, input().split())) # f 누적합 for i in range(1, K+1) : f[i] += f[i-1] # dp[i][j] : i~j 파일을 합치는데 최소 비용 dp = [[1e9]*(K+1) for _ in range(K+1)] for i in range(1, K) : dp[i][i] = f[i]-f[i-1] dp[i][i+1] = f[i+1]-f[i-1] dp[K][K]..
2023.10.20 -
문제 다음과 같은 규칙을 만족하는 비밀번호는 높음 품질을 가진다고 평가한다. 1) 모음 하나를 반드시 포함한다. 2) 모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다. 3) 같은 글자가 연속적으로 오면 안되나, ee와 oo는 허용한다. 20글자 이하의 문자열이 주어질 때 품질 평가하기 풀이 1) 모음 하나를 반드시 포함 모음 집합과의 합집합 연산으로 현재 단어에 모음이 있는지 확인한다. 2) 단어의 연속 확인 이전 단어의 타입(모음/자음), 알파벳, 타입의 연속 개수를 포함하는 prev 변수를 통해 확인하도록 한다. # 출력 함수 def result(res, word) : if res : print(f" is acceptable.") else : print(f" is not acceptable.")..
[백준] 4659 비밀번호 발음하기문제 다음과 같은 규칙을 만족하는 비밀번호는 높음 품질을 가진다고 평가한다. 1) 모음 하나를 반드시 포함한다. 2) 모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다. 3) 같은 글자가 연속적으로 오면 안되나, ee와 oo는 허용한다. 20글자 이하의 문자열이 주어질 때 품질 평가하기 풀이 1) 모음 하나를 반드시 포함 모음 집합과의 합집합 연산으로 현재 단어에 모음이 있는지 확인한다. 2) 단어의 연속 확인 이전 단어의 타입(모음/자음), 알파벳, 타입의 연속 개수를 포함하는 prev 변수를 통해 확인하도록 한다. # 출력 함수 def result(res, word) : if res : print(f" is acceptable.") else : print(f" is not acceptable.")..
2023.10.20 -
문제 1번 발전소와 N번 발전소가 2차원 격좌 좌표 위에 있다. 발전소는 전선으로 연결되며 남아 있는 전선 수는 W이고, 어떤 두 발전소 사이의 전선 길이가 M을 초과해서는 안된다. 1
[백준] 1277 발전소문제 1번 발전소와 N번 발전소가 2차원 격좌 좌표 위에 있다. 발전소는 전선으로 연결되며 남아 있는 전선 수는 W이고, 어떤 두 발전소 사이의 전선 길이가 M을 초과해서는 안된다. 1
2023.10.19