본문 바로가기

코딩테스트 with PYTHON

(31)
[python] 코딩테스트 대비 - 소수(에라토스테네스 체) 문제) 답안 코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 import sys #sys.stdin=open("input.txt","rt") #숫자마다 2부터 시작해서 소수를 체크하는 방식은 시간초과가 발생함. N=int(input()) check=[0]*(N+1)#총 n+1개의 리스트 (인덱스3은 숫자3을 의미) count=0 for i in range(2,N+1):#인덱스 2부터(0 1은 확인할 필요 없음,) N까지 반복 if check[i]==0:#i인덱스가 소수라면 count+=1#카운트 증가 for j in range(i,N+1,i):#i의 배수들은 소수가 아님을 표시 check[j]=1 print(count) Colored by Color Scripter cs
[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 import sys #sys.stdin=open("input.txt","rt") #방법1 - 숫자 그대로 이용 def digit_sum2(x): num=0 while x>0: num+=x%10#10으로 나눈 나머지 ex)121을 10으로 나눈 나머지는 1 즉, 한자리 수를 의미 x=x//10#10으로 나눈 몫 ex) 121를 10으로 나눈 몫은 12 여기서 다시 10으로 나눈 나머지를 구하면 2(다음 자리수 접근) return num #방법 2 - 문자열 이용 def digit_sum(x): sum=0 for i in str(x):#..
[python] 코딩테스트 대비 - 정다면체 문제) 답안 코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 import sys #sys.stdin=open("input.txt","rt") N,M=map(int,input().split()) cnt=[0]*(N+M+2)#덧셈 결과 카운팅할 리스트 cnt[2]에는 두 눈의 합이 2인 경우 카운트가 삽임됨. for i in range(1,N+1):#N면체 주사위 for j in range(1,M+1):#M면체 주사위 cnt[i+j]+=1#두 눈의 합 카운트 증가 for i in range(2,len(cnt)): if cnt[i]==max(cnt):#최대 값 이라면 출력 print(i,end=' ') Colored by Color Scripter 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 31 32 33 34 35 36 37 38 39 40 #[선수지식] - 최솟값 구하기 arr=[5,3,7,9,2,5,2,6]#배열에서 가장 작은 값을 찾아보자 arrMin=float('inf')#변수에 무한대 숫자 저장, 배열 첫번째 요소를 저장해도 됨. #for i in arr: 로도 접근 가능. for i in range(len(arr)):# 배열 수를 하나씩 접근하며 가장 최소값 찾기 if arr[i]
[python] 코딩테스트 대비 - K번째 큰 수 문제) 답안코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import sys #sys.stdin=open("input.txt","rt") N,K=map(int,input().split())#N,K입력 받기 box=list(map(int,input().split()))# N개의 정수 입력받기 res=set()#중복방지를 위한 set 자료구조 - 집합개념으로 중복허용 안함(같은 수를 넣어도 추가 안됨.) #3정수 선택 3중 반복문 for i in range(N): for j in range(i+1,N): for q in range(j+1,N): res.add(box[i]+box[j]+box[q]) res=list(res)#정렬을 위한 list화 res.sort(reverse=T..
[python] 코딩테스트 대비 - K번째 수 문제) 답안코드) 1 2 3 4 5 6 7 8 9 import sys #sys.stdin=open("input.txt","rt") T=int(input())#테스트 케이스 수 입력받기 for i in range(1,T+1):#케이스 수 만큼 loop N,s,e,k=map(int,input().split())#N s e k 입력받기 box=list(map(int,input().split()))# N개의 숫자 list로 저장 box=box[s-1:e]#s번째부터 e번째 까지 추출 box.sort()#오름 차순 정렬 print("#%d %d" %(i,box[k-1]))#출력 형식에 맞게 k번째 수 출력
[python] 코딩테스트 대비 - K번째 약수 문제) 답안 코드) 1 2 3 4 5 6 7 8 9 10 11 12 import sys #sys.stdin=open("input.txt","rt") N,K=map(int,input().split())#공백으로 두 숫자를 입력받아서 정수화 count=0 for i in range(1,N+1): if N%i==0:#약수 검사 count+=1#약수라면 카운트 1증가 if count==K:#해당 약수가 k번째 약수라면 출력 후 종료 print(i) break else:#break로 for문이 종료되지 않았다면 -1출력 즉, k번째 약수 존재하지 않음. print(-1)