백준 파이썬 15

(Python/파이썬) 백준 2163번 - 초콜릿 자르기

문제출처 : https://www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿 www.acmicpc.net 1. 코드 1 2 n, m = map(int,input().split()) print(n*m-1) cs 2. 해결과정 NXM 크기의 초콜릿을 가로방향으로 자르든 세로방향을 먼저 자르든 항상 결과가 같기 때문에 식을 구해주면 가로방향으로 먼저 자른다고 했을 경우 나올 수 있는 경우의 수는 (N-1) * M + (M-1) = N*M - M + M - 1 = N*M - 1 이다. 따라..

(Python/파이썬) 백준 2164번 - 카드2

문제출처: https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 import sys from collections import deque n = int(input()) de =deque() for i in range(n): de.append(i+1) while len(de) >1: de.popleft() de.append(de.popleft()) print(de.pop()) cs 2. ..

(Python/파이썬) 백준 11656번 - 접미사 배열

문제출처: https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 s = input() arr =[] for i in range(len(s)): arr.append(s[i:]) arr.sort() for i in arr: print(i) cs 2. 해결과정 문자열 s를 입력 받고, 접미사를 저장할 배열 arr을 만들어준다. for문을 돌면서 s[0:],s[1:]... 순으로 arr에 추가해준다. 오름차순으로 정렬하고, for문을 통해 정렬된 arr를 출력해주면 된다. 3. 느낀점 문자열 ..

(Python/파이썬) 백준 1890번 - 점프

문제출처: https://www.acmicpc.net/problem/1890 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 n = int(input()) way=[] for i in range(n): way.append(list(map(int,input().split()))) #해당 좌표 이동가능한 방법의 갯수 dp = [[0 for _ in range(n)] for _ in..

(Python/파이썬) 백준 2579번 - 계단 오르기

문제출처: https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 n = int(input()) stair = [0] for _ in range(n): stair.append(int(input())) if n ==1: print(stair[1]) else: dp = [0]*(n+1) dp[1]=stair[1] dp[2]=stair[1]+stair[2] for i in range(..

(Python/파이썬) 백준 11048번 - 이동하기

문제출처: https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 n,m = map(int, input().split()) maze =[] for _ in range(n): maze.append(list(map(int, input().split()))) dp =[[0]*(m+1)]*(n+1) for i in range(1, n+1): for j in range(1, m+1)..

(Python/파이썬) 백준 1075번 - 나누기

문제출처: https://www.acmicpc.net/problem/1075 1075번: 나누기 첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다. www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 N = int(input()) F = int(input()) ans = N - (N%100) for i in range(100): if(ans+i) % F == 0: print('{:02d}'.format(i)) break cs 2. 해결과정 N과 F를 각각 입력받고 N에서 N을 100으로 나눴을 때 나머지를 빼준다. 1021이면 1021을 100으로 나눈 나머지가 21이기..

(Python/파이썬) 백준 2740번 - 행렬 곱셈

문제출처: https://www.acmicpc.net/problem/2740 2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 N,M = map(int, input().split()) A=[] for i in range(N): A.append(list(map(int,input().split()))) M,K = map(int, input().split()) B=[] for i in r..

(Python/파이썬) 백준 1476번 - 날짜 계산

문제출처: https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 e,s,m = map(int, input().split()) E,S,M =1,1,1 year = 0 while True: year+=1 if e==E and s==S and m==M: print(year) break E+=1 ; S+= 1; M+=1; if E == 16: E =1 if..

(Python/파이썬) 백준 2902번 - KMP는 왜 KMP일까?

문제출처: https://www.acmicpc.net/problem/2902 2902번: KMP는 왜 KMP일까? 입력은 한 줄로 이루어져 있고, 최대 100글자의 영어 알파벳 대문자, 소문자, 그리고 하이픈 ('-', 아스키코드 45)로만 이루어져 있다. 첫 번째 글자는 항상 대문자이다. 그리고, 하이픈 뒤에는 반드 www.acmicpc.net 1. 코드 name = list(input().split('-')) for i in name: print(i[0], end="") 2. 해결과정 -을 기준으로 이름을 구분하여 리스트에 입력해주고, 리스트의 요소들의 앞 글자만 출력해주면 된다. end = ''을 추가해주면 줄바꿈과 띄어쓰기 없이 출력된다. 3. 느낀점 심플