목록Algorithm/백준 알고리즘_Python (125)
alpyrithm_알파이리즘

2816 디지털 티비 https://www.acmicpc.net/problem/2816 2816번: 디지털 티비 문제 2012년 12월 31일 새벽 4시부터 지상파 아날로그 TV방송이 종료되었다. TV를 자주보는 할머니를 위해서, 상근이네 집도 디지털 수신기를 구입했다. 원래 상근이네 집에는 KBS1과 KBS2만 나왔다. �� www.acmicpc.net 문제 풀기 전 공부할 것 : 문자열 처리, 그리디 알고리즘 문제 힌트 : 예제 입력 1을 넣었을 때 예제 출력 1로 반드시 출력되지 않아도 괜찮다. 본인의 규칙대로 KBS1과 KBS2를 첫 번째 두 번째 있도록 만들면 된다. 풀이 1 - KBS1를 첫 번째로, KBS2를 두 번째로 순서를 바꾸는 방법을 구하는 것으로 1, 2, 3, 4번을 모두 사용할 ..

2621 카드게임 https://www.acmicpc.net/problem/2621 2621번: 카드게임 근우는 오늘 재미있는 카드 게임을 배우고 있다. 카드는 빨간색, 파란색, 노란색, 녹색의 네 가지 색이 있고, 색깔별로 1부터 9까지 숫자가 쓰여진 카드가 9장씩 있다. 카드는 모두 36(=4x9)장이다. � www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 구현 문제 풀기 전 주의해야 할 점 : 규칙 1 - 9까지 나와있는 입력을 넣었을 때 알맞은 출력인지 확인하면 대부분의 에러를 피할 수 있다. 풀이 1 - 우선 규칙이 복잡해서 이를 정리할 필요가 있다. - 리스트, 딕셔너리, set 등 어떤 형태로 카드 정보를 저장할 것인지 정해야 한다. - 알아야 하는 조건이 카드 5장 모두 같..

1652 누울 자리를 찾아라 https://www.acmicpc.net/problem/1652 1652번: 누울 자리를 찾아라 첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다. www.acmicpc.net 문제 풀기 전 공부할 것 : 수학 문제 풀기 전 힌트 ▼ 중간에 어정쩡하게 눕는 경우가 없으므로 '.'이 2개 이상 연달아 있다면 그것은 누울 자리 1개로 생각하면 된다. 풀이 1 누울 자리가 2자리 이상 붙어있으면 누울 자리 1개로 한다. 방을 row별로 room에 저장을 한다. 방을 돌면서 '.'(누울 수 있는 자리)이 2개 이상 붙어있는 곳을 찾는다. c..

1004 어린 왕자 https://www.acmicpc.net/problem/1004 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주�� www.acmicpc.net 문제 풀기 전 공부할 것 : 원과 점의 관계(수학) 풀이 1 출발점과 도착점이 원 안에 속하면 진입이나 이탈이 필요하다. 따라서 출발점과 도착점 각각 원 안에 속하는지 확인을 해야 하며 둘 다 속하면 진입이나 이탈을 할 필요가 없다는 점을 이해해야 한다. flag를 통해 출발점과 도착점이 동시에 속하는 경우를 구별했다. import sys input = sys..

자료구조(1) 10828 스택 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net 문제 풀기 전 공부할 것 : 스택 풀이 1 cmd를 split() 하지 않으면 cmd[0]를 했을 때 'p', 't', 's', 'e'와 같이 하나의 알파벳을 가리킨다. 제일 최근 풀이 import sys input = sys.stdin.readline def command(stk, cmd): cmd = cmd.split() if cmd[0] =..

DP 11726 2xn 타일링 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 풀기 전 공부할 것 : DP 풀이 2xN의 타일링의 경우 2x(N-1) 타일링에 2x1 타일을 붙이는 경우 2x(N-2) 타일링에 1x2 타일 2개를 붙이는 경우 1과 2의 경우의 합이므로 dp(N) = dp(N-1) + dp(N-2)가 점화식이 된다. n = int(input()) dp = [0] * (n+1) for i in range(1, n+1): if i == 1: dp[i..

DP 1463 1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 풀기 전 공부할 것 : Dynamin Programming(동적 프로그래밍) 풀이 1 점화식 정수 X로 1을 만드는 연산 횟수 dp[x-1] + 1 : x-1로 1을 만드는 연산에 1을 더한 값 dp[x//2] + 1 : x/2로 1을 만드는 연산에 1을 더한 값 dp[x//3] + 1 : x/3로 1을 만드는 연산에 1을 더한 값 위의 3가지 경우의 값 중 가장 작은 값이 정수 X로 1을 만드는 연산 횟수의 최솟값이다. n = int(input()) dp = [0 for _ i..
입출력(3) 알고리즘의 가장 기본인 입출력 문제들 2438 별 찍기 - 1 https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 풀이 n = int(input()) for i in range(1, n+1): print('*' * i) 2439 별 찍기 - 2 https://www.acmicpc.net/problem/2439 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 풀이1 n = int(input..