본문 바로가기

코딩테스트 with PYTHON

(31)
[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개 선택 ..
[python] 코팅테스트 대비 - 2차원 배열 상하좌우 비교 문제) 정답 코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import sys #sys.stdin = open("input.txt", 'r') dx=[-1, 0, 1, 0]#상하좌우 탐색을 위함. dy=[0, 1, 0, -1]#상하좌우 탐색을 위함. n=int(input()) a=[list(map(int, input().split())) for _ in range(n)] ######0으로 배열 둘러 싸기####### a.insert(0, [0]*n)#최상단에 0배열 추가 a.append([0]*n)#최하단에 0배열 추가 for x in a:#각 행마다 맨 앞, 맨 뒤에 0추가 x.insert(0, 0) x.append(0) #######..
[python] 코딩테스트 대비 - 2차원 배열 회전 및 모래시계 탐색 문제) 답안코드) 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') n=int(input()) a=[list(map(int, input().split())) for _ in range(n)] m=int(input())#회전 명령 수 for i in range(m): h, t, k=map(int, input().split())#행, 방향, 수 if(t==0):#왼쪽일 경우 for _ in range(k): a[h-1].append(a[h-1].pop(0))#맨 앞자료를 빼서 맨 뒤로 삽입 else:#오른쪽일 경우 for _ in ..
[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("input.txt", 'r') n=int(input()) a=[list(map(int, input().split())) for _ in range(n)] res=0#정답 s=e=n//2#초기값(격자판 가운데 최상단) for i in range(n): for j in range(s, e+1): res+=a[i][j] if i
[python] 코딩테스트 대비 - 2차원 배열 합 문제) 정답 코드) 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') n=int(input()) a=[list(map(int, input().split())) for _ in range(n)]#2차원 배열 초기화 largest=-2147000000 for i in range(n): #열행 합 추출 sum1=sum2=0 for j in range(n): sum1+=a[i][j]#가로 sum2+=a[j][i]#세로 if sum1>largest: largest=sum1 if sum2>largest: largest=sum2 sum1=s..