목록백준 python 기록 (69)
작은 지식주머니
백준 링크:https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 가능한 빠르게 배달이 가능한 치킨의 집 M을 구해서 합을 구하면 되는 문제였다. 초반엔 BFS를 사용해서 구해야 하나? 라고 생각헀지만 너무나 비효율적이라 생각해서 그냥 위치만 저장하고 itertools 의 combinations를 사용해서 모든 경우의 수에 대한 합 중 가장 낮은 값을 넣었다. 생각해보면 엄청 간단한 문제이지만 요상하게 시간이 많이 걸린거 보니 그..

백준 링크 : https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 어릴때 많이했던 뱀 게임인데 하 진짜 어지럽다.. *!!!! 오류코드 틀림 from collections import deque import sys sys.setrecursionlimit(10**9) n = int(input()) boaed = [[0]*(n+1) for i in range(n+1)] apple = int(input()) for i in range(apple): a,b = ..

https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net 기초 그리드 문제 높은순서대로 값을 덜어내면 됨. 10을 초과할 경우 끝 자리수가 0 이 아니라면 거짓 t = int(input()) s = [300,60,10] result=[0,0,0] if t > 10: if t % 10 != 0: print(-1) exit() for i in range(3): if t >= s[i]: result[i] += (t//s[i]) t -= result[..

링크 : https://www.acmicpc.net/problem/10829 10829번: 이진수 변환 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000) www.acmicpc.net 사실 python은 bin 쓰면 그대로되지마는 재귀로 풀어보자 n = int(input()) def soulution(n): if n < 1: return "0" elif n == 1: return "1" elif n % 2 == 1: return soulution(int(n//2))+"1" elif n % 2 == 0: return soulution(int(n//2))+"0" a= soulution(n) print(a) 2진법을 간단히 하는법은 그냥 2로 나눠서 뭐가 남는지 확인만 하면..

링크 : https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 전방트리를 어떻게 인식하느냐가 문제였는데 트리 tree 배열을 입력하고 for in range(1,len(tree)) 만큼 돌려서 tree[0]보다 크다면 right 그 전그룹은 left 이 순서대로 재귀함수. start > end 라면 return import sys sys.setrecursionlimit(10**9) input=sys.stdin.readline preord..

백준 링크:https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 두 가지 방법이 있다. 1. math 라이브러리를 이용. import math n = int(input()) print(math.factorial(n)) 2. 재귀함수를 이용 n = int(input()) def factorial(n): if n == 1 or n == 0: return 1 return n * factorial(n-1) print(factorial(n))

링크: https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 단 한명의 선수만 들어오지 못한다는 경우를 생각하지 못하고 꽤 해맸다 return 값에 "" 도 포함하라는건가?? 라는 뻘짓을 오래했다. 딕셔너리 값에 하나씩 늘린다음 completion 값에서 하나씩 뺀 다음 0 이상인 경우에는 인출 def solution(participant, completion): dic = {} answer =..

링크 : https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net a ~~ z 까지 값을 지정 해준 리스트에서 하나씩 꺼내서 제곱을 늘리면서 곱하면 끝이다. dic={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,"j":10,"k":11,'l':12,"m":13,"n":14,'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,"v":22,'w':23,'x':24,'y..