분류 전체보기
-
문제 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 -
문제 토마토를 격자모양 상자 칸에 하나씩 넣은 다음 상자들을 수직으로 쌓아 올려 보관한다. 보관 후 하루가 지나면 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향을 의미한다. 며칠이 지나면 토마토가 다 익게 되는지 구하기 2
[백준] 7569 토마토문제 토마토를 격자모양 상자 칸에 하나씩 넣은 다음 상자들을 수직으로 쌓아 올려 보관한다. 보관 후 하루가 지나면 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향을 의미한다. 며칠이 지나면 토마토가 다 익게 되는지 구하기 2
2023.10.19 -
문제 25개 칸으로 이루어진 빙고판에 1~25까지 자연수를 하나씩 쓴다. 사회자가 숫자를 하나씩 부를 때 먼저 세 줄 이상 만들면 승자가 된다. 철수의 빙고판이 주어질 때 몇 번째 수를 부른 후 "빙고"를 외치게 되는지 출력하기 풀이 1) 빙고판 숫자별로 위치를 기록한다 (loc) 빙고판도 따로 기록한다 (chulsoo) 2) MC의 숫자들을 입력한다 (MC) 3) 사회자가 부른 숫자들을 차례로 살펴보면서 해당 숫자 칸을 0으로 만들고, 완성된 줄이 있는지 확인한다. row 배열을 통해 각 행에 몇 개가 제거 됐는지 기록하고, 5가 되면 한 줄이 완성됐다고 볼 수 있다. col 배열을 통해 각 열에 몇 개가 제거 됐는지 기록하고, 5가 되면 한 줄이 완성됐다고 볼 수 있다. check 함수를 통해 왼쪽과..
[백준] 2578 빙고문제 25개 칸으로 이루어진 빙고판에 1~25까지 자연수를 하나씩 쓴다. 사회자가 숫자를 하나씩 부를 때 먼저 세 줄 이상 만들면 승자가 된다. 철수의 빙고판이 주어질 때 몇 번째 수를 부른 후 "빙고"를 외치게 되는지 출력하기 풀이 1) 빙고판 숫자별로 위치를 기록한다 (loc) 빙고판도 따로 기록한다 (chulsoo) 2) MC의 숫자들을 입력한다 (MC) 3) 사회자가 부른 숫자들을 차례로 살펴보면서 해당 숫자 칸을 0으로 만들고, 완성된 줄이 있는지 확인한다. row 배열을 통해 각 행에 몇 개가 제거 됐는지 기록하고, 5가 되면 한 줄이 완성됐다고 볼 수 있다. col 배열을 통해 각 열에 몇 개가 제거 됐는지 기록하고, 5가 되면 한 줄이 완성됐다고 볼 수 있다. check 함수를 통해 왼쪽과..
2023.10.18