본문 바로가기

백준

(25)
[구현] 백준 15686번 '치킨 배달' (Python) https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 1. 일반 집과 치킨집 좌표 구하기 2. 모든 치킨집 중에서 m개의 치킨집을 뽑는 조합 구하기 3. 조합 하나씩 꺼내서 집마다 가장 가까운 치킨집 거리 구하고 다 더하기 4. 다 더한 치킨집 거리에서 최소 값 구하기 n,m = map(int,input().split()) city = [] chicken = [] home = [] for i in range(n): city.ap..
[구현] 백준 3190번 '뱀' (Python) https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 1. 사과 있는 곳은 1로 표시 2. 방향 지정 함수 만들기 3. q를 사용하여 뱀의 위치 저장. 사과가 없을 때 가장 왼쪽 좌표 제거하면 도미 4. 벽이나 뱀의 몸통과 부딪혔다면 종료 n = int(input()) k = int(input()) data = [[0]*(n+1) for _ in range(n+1)] info = [] for _ in range(k): a,b = map(int,input()..
[동적계획법] 백준 18353번 '병사 배치하기' (Python) https://www.acmicpc.net/problem/18353 18353번: 병사 배치하기 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 1. 가장 긴 증가하는 부분 수열 알고리즘 이용하여 풀 수 있음 n = int(input()) array = list(map(int,input().split()) array.reverse() dp = [1] * n for i in range(1,n): for j in range(0,i): if array[j] < array[i]: dp[i] = max(dp[i], dp[j]+1) pri..
[소수의 판별] 백준 1929번 '소수 구하기' (Python) https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net N과 M의 최댓값이 1,000,000이므로 에라토스테네스의 체 알고리즘으로 풀어야 함 '''입력 예제 3 16 ''' import math n,m = map(int,input().split()) array = [True for i in range(m+1)] array[0],array[1] = 0,0 #0,1은 소수 아님 주의 for i in range(2,int(math.sqrt(m))+1): if array[i]==True: ..
[기타] 백준 1459번 '걷기' (Python) https://www.acmicpc.net/problem/1459 1459번: 걷기 세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 ( www.acmicpc.net 한 블록의 2배 값이 대각선보다 작으면 최종 목적지(x+y) * 한 블록 대각선이 더 빠르다면, x와 y의 차가 짝수라면, {대각선*(x, y 중 작은 값)} + {(한 블록, 대각선 중 작은 값)*(x, y 차)} 홀수라면, {대각선*(x,y 중 작은 값)} + {(한 블록, 대각선 중 작은 값)*((x, y 차)-1)+한 블록} '''입력예제 4 2 3 10 4 2 3 5 2 0 12 10 ..
[기타] 백준 1254번 '팰린드롬 만들기' (Python) https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 팰린드롬이 맞는지 확인할 수 있는 함수를 만든다. 문자를 하나씩 맨 뒤에 붙이면서 팰린드롬이 맞는지 확인한다. def pal(ss): half = len(ss)//2 for i in range(half): if s[i] != s[-(i+1)]: return False return True tmp = '' s = input() leng = len(s) if fel(s)==False: for i in ra..
[구현] 난이도1, 백준 18406번 '럭키 스트레이트' (Python) https://www.acmicpc.net/problem/18406 18406번: 럭키 스트레이트 첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. www.acmicpc.net 입력값을 반으로 나누어 왼쪽 값과 오른쪽 값이 같은지 비교한다. ''' 123402 7755 ''' n = input() half = int(len(n)/2) ls=0;rs=0 for idx, i in enumerate(n): if idx
[탐욕법] 백준 1439번 '뒤집기' (Python) https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 0에서 1로, 1에서 0으로 바뀌는 지점을 파악하여 연속된 0과 1의 개수를 파악한다. s의 범위를 파악해야 하므로 바뀌는 지점을 담는 변수 change 첫 번째 값에 0을, 마지막 값에 s의 길이를 넣는다. 0과 1 중 연속된 값이 적은 것을 파악하여 개수를 출력한다. '''입력 예제 0001100 11111 00000001 1100110011001100001 11101101 ''' s = in..

LIST