파이썬 (23) 썸네일형 리스트형 [python] 코딩테스트 대비 - 그리디(시뮬레이션 - 조건에 따른 최소 갯수) 문제) 답안코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import sys from collections import deque #sys.stdin=open("input.txt", "r") n, limit=map(int, input().split()) p=list(map(int, input().split())) p.sort()#몸무게 정렬 p=deque(p)#리스트를 deque 자료구조로 변경 #deque를 사용하는 이유는 list.pop(0)를 하면 #제거된 맨 자료 뒤에 있는 모든 원소들이 한칸씩 당겨지는 연산을 하기 때문 #deque는 가르키는 포인터가 존재해서 포인터만 이동함.(효율적) cnt=0#보트 수 while p:#p가 비어있지 않다면 .. [python] 코딩테스트 대비 - 그리디(시뮬레이션-높이 맞추기) 문제) 답안코드) 1 2 3 4 5 6 7 8 9 10 11 12 import sys #sys.stdin=open("input.txt", "r") L=int(input()) a=list(map(int, input().split())) m=int(input()) a.sort()#정렬 인덱스 0이 가장 높은 상태 for _ in range(m):#m번 반복 a[0]+=1#최대 값 1 빼고 a[L-1]-=1#최소 값 1 더하기 a.sort()#그 후 재 정렬 print(a[L-1]-a[0])#답 출력 cs [python] 코딩테스트 대비 - 이분검색(일직선에 배치) 문제) 답안 코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import sys #sys.stdin=open("input.txt", "r") def Count(len):#len으로 배치 할 수 있는 마리수 리턴 cnt=1#마리 수 ep=Line[0]#최근에 말을 배치한 우;ㅊ; for i in range(1, n): if Line[i]-ep>=len:#배치 할 수 있다면, cnt+=1 #마리수 증가 ep=Line[i] #끝지점 변경 return cnt n, c=map(int, input().split()) Line=[] for _ in range(n): tmp=int(input()) Line.appen.. [python] 코딩테스트 대비 - 이분검색(최소 길이 구하기) 문제) 답안 코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import sys #sys.stdin=open("input.txt", "r") def Count(capacity):#해당 용량으로 만들 수 있는 dvd 갯수 리턴 cnt=1 sum=0 for x in Music: if sum+x>capacity: cnt+=1 sum=x else: sum+=x return cnt n, m=map(int, input().split()) Music=list(map(int, input().split())) maxx=max(Music)#음악 중 최고 용량 lt=1 rt=sum(Music)#1개 dvd에 모든 노래를 .. [python] 코딩테스트 대비 - 이분검색(랜선자르기) 문제) 답안 코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import sys #sys.stdin=open("input.txt", "r") def Count(len):#len으로 짜를 수 있는 총 갯수 리턴 cnt=0 for x in Line: cnt+=(x//len) return cnt k, n=map(int, input().split()) Line=[]#길이 리스트 res=0#정답 largest=0#최대 값 for i in range(k): tmp=int(input()) Line.append(tmp) largest=max(largest, tmp) lt=1 rt=largest#1~최대값 범위 지정 whi.. [python] 코딩테스트 대비 - 이분검색(결정알고리즘) 문제) 답안 코드) 이분 탐색은 시간 복잡도 log_2 N을 보장한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import sys #sys.stdin=open("input.txt", "r") n, m=map(int, input().split()) a=list(map(int, input().split())) a.sort() lt=0#왼쪽 포인터 rt=n-1#오른쪽포인터 while ltm:#중간값이 정답보다 크다면, rt=mid-1 else:#작다면 lt=mid+1 cs [python] 코딩테스트 대비 - 2차원 배열에서 회문 탐색 문제) 답안 코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import sys #sys.stdin=open("in1.txt", "r") board=[list(map(int, input().split())) for _ in range(7)] cnt=0 len=5 for i in range(3): for j in range(7):#가로 검사 tmp=board[j][i:i+len]#5글자 검사 if tmp==tmp[::-1]:#회문인지 확인 cnt+=1 for k in range(len//2):#세로 검사 if board[i+k][j]!=board[len-k+i-1][j]:#맨앞 맨뒤 비교 반복 break else: cnt+=1 print(cnt) Colored .. [python] 코딩테스트 대비 - 스토쿠 검사 문제) 답안코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import sys #sys.stdin=open("input.txt", "r") def check(a): for i in range(9): ch1=[0]*10#행 체크 ch2=[0]*10#열 체크 for j in range(9): ch1[a[i][j]]=1#행 ch2[a[j][i]]=1#열 if sum(ch1)!=9 or sum(ch2)!=9:#합이 9가 아니면 중복 숫자가 있는것 return False #3x3 9개 검사 for i in range(3):#9개 3x3 중 1개 선택 for j in range(3):#9개 3x3 중 1개 선택 .. 이전 1 2 3 다음