본문 바로가기

코딩 문제풀이 및 연습4

[Python] 백준 1920 수 찾기 N=int(input()) first=list(map(int,input().split())) M=int(input()) second=list(map(int,input().split())) for i in range(M): check=1 for j in range(len(first)): if(second[i]==first[j]): print("1") check=0 break if(check==1): print("0") 이중반복문을 사용하여 일일이 비교를 했더니 시간초과가 발생하였다. 문제해결을 위해 이진 탐색 알고리즘(Binary Search)을 사용했다. 이진 탐색을 적용 할 수 있는 전제 조건은 오름차순으로 정렬된 리스트이다. 앞에서 했던 코드처럼 처음부터 끝까지 하나씩 모든 데이터를 체크하여 값을 찾.. 2022. 3. 9.
[Python] 백준 11047 동전0 N,K=map(int,input().split()) some_list=[] for i in range(N): some_list.append(int(input())) count=0 while(K>0): for i in range(N-1,-1,-1): # 리스트 맨 뒤 인덱스부터 if(K-some_list[i]>=0): # K값에서 리스트 값을 뺏을 때 0보다 크거나 같음 K=K-some_list[i] # K값 감소 count=count+1 break else: #크다면 리스트 인덱스 줄여주기 위해 N값 감소 -1 N=N-1 print(count) 처음에는 1 2022. 2. 23.
[Python] 백준 4928 베르트랑 공준 이 문제를 해결하기위해 전에 풀었던 (백준 1929) 문제에서 소수 구하는 방법, 제곱근이 있는 수 중에 약수가 있으면 false를 반환하는 방법(isPrime 함수)를 사용하여 문제를 해결하려고 했으나 시간초과가 발생하였다. 입력받은 n값과 그 범위에 따라 모든 수를 고려했기 때문이다. 시간초과 문제를 해결하기 위해서 문제에서 제한한 범위 1 2022. 2. 8.
[Python] 백준 1929 소수 구하기 (에라토스테네스의 체 vs 시간초과) 처음에는 시간초과를 고려하지 않고 중첩 반복문을 사용하여 간단하게 해결 할 수 있다고 생각했다. 1부터 1,000,000 사이의 수(1 2022. 2. 8.