백준(32)
-
백준 치킨 배달 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 국어 능력이 중요한 거 같은 복잡한 문제!!!! 우선 입력으로 들어온 걸 잘 정리해서 저장해둔다 N은 도시 크기, M은 최종 선택할 치킨 가게 개수, houses엔 집이 있는 좌표를 튜플로, stores엔 치킨 가게가 있는 좌표를 튜플로 저장한다. 이때 좌표는 0이 아니라 1부터 시작한다고 했으므로 그냥 +1씩 해줬다. 이후 각 집마다 각 치킨 가게까지의 거리를 구했다. 이를..
2021.09.02 -
백준 뱀 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제 설명이 좀 불친절하지 않나?? 그렇지 않나??!?! 뱀이 너무 이상하게 움직여서 짜증나는 문제였다. 뱀이 자기자신의 몸과 부딪히는게 어떤 상황인건지 한참 고민했다. 다음 이동할 곳으로 (무리하게!) 먼저 머리 먼저 옮기는데 그 곳에 지 몸이 있으면 부딪히는 거구만 으이구 먼저 보드 크기, 사과 개수, 사과 위치, 방향 전환 시점 및 방향 등 필요한 정보를 모두 받아 변수에 저장한다. 보드는 0~ (..
2021.08.24 -
백준 럭키 스트레이트 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/18406 18406번: 럭키 스트레이트 첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. www.acmicpc.net 주어진 숫자를 절반으로 갈라 오른쪽, 왼쪽으로 나누고, 오른쪽 자릿수의 합과 왼쪽 자릿수의 합이 같은지 다른지 확인한다. 정말 쉬운 문제였는데 이상하게 평소처럼 sys.stdin.readline()을 쓰니 UnicodeError였나? 무슨 에러가 나서 헤맸다. 이상하네??? x = input() half = len(x) // 2 right = sum([int(num) for num in x[:half]]) left = sum([int(num) fo..
2021.08.24 -
백준 뒤집기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 입력으로 주어진 스트링 s에서 연속된 중복을 없앤 스트링인 x를 구합니다. 예를 들어, 000110000는 010이 됩니다. 이후 x에서 0의 개수와 1의 개수 중 더 작은 것을 정답으로 반환합니다. import sys s = sys.stdin.readline() # s에서 연속된 중복을 없앤 string x = s[0] for i in range(len(s)): if i == 0 or s[i] ..
2021.08.16 -
백준 카드 정렬하기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net cards라는 heap에 각 카드 묶음의 카드 수를 저장합니다. cards의 길이가 1이 될 때까지 다음을 반복합니다. 최솟값 2개를 뽑아(pop) 둘의 합을 result라는 리스트에 추가하고, 둘의 합을 cards 힙에도 다시 추가합니다. 이후 다시 최솟값 2개를 뽑아 이를 반복합니다. 마지막엔 result 리스트의 모든 원소의 합을 반환합니다. sort 함수를 이용하면 시간초과가..
2021.08.12 -
백준 안테나 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net 집들의 위치를 houses라는 리스트에 저장하고 이를 오름차순으로 정렬합니다. 집들의 개수를 N으로 저장하고, 정중앙의 집인 N을 2로 나눈 몫번째 집에 안테나를 설치합니다. import sys # 집의 개수 N = int(sys.stdin.readline()) # 집의 위치 houses = list(map(int, sys.stdin.readline().split())) # 정렬 houses.sort() # 정중앙의 집..
2021.08.03