반응형

자료구조 및 알고리즘/백준 54

[python] 18870. 좌표 압축

문제 잘못된 풀이 import sys N = int(input()) num_list = list(map(int, sys.stdin.readline().split())) sorted_list = sorted(set(num_list)) answer_list = [] for i in num_list: idx = sorted_list.index(i) # O(n)의 시간 복잡도 -> 시간초과 answer_list.append(idx) print(*answer_list) 해당 문제는 입력한 숫자보다 작은 수가 몇 개나 있는지 체크하는 문제이다. 바로 떠오른 방법이 .index()로, 원하는 요소가 리스트 중에 몇 번째인지 그 인덱스를 return해주는 라이브러리이다. 하지만 .index()는 O(n)의 시간복잡도로..

[python] 1427. 소트인사이드

문제 올바른 풀이 string = str(input()) str_list = [] for i in string: str_list.append(i) str_list = sorted(str_list,reverse=True) make_int = "" for i in str_list: make_int += i print(int(make_int)) 해당 문제는 배열을 내림차순으로 정렬하는 문제이다. 먼저 입력받은 값을 따로 떨어트려야 하기 때문에 str_list에 모두 append를 해주고, 해당 리스트를 reverse=True로 정렬해준다. 그리고 한 글자 한 글자 붙여주기 위해 for문으로 빈 string에 붙여주고 int 값으로 출력했다. 정 ! 답 ! (sorted() 없으면 못 살아 .. ) 아니 구현할..

[python] 1181. 단어 정렬

문제 올바른 풀이 1 N = int(input()) str_list = [] answer_list = [] for i in range(N): string = str(input()) # sys.stdin.readline() str_list.append(string) str_list = sorted(str_list) str_list = sorted(str_list, key=len) for i in str_list: if i in answer_list: # 겹치지 않도록 안에 있으면 continue continue else: # 없으면 추가 answer_list.append(i) print(*answer_list, sep='\n') 해당 문제는 단순 정렬을 하는 것이 아니라, 길이가 짧은 것부터 정렬하고 길이..

[python] 2108. 통계학

문제 올바른 풀이 import sys from collections import Counter N = int(input()) num_list = [] for i in range(N): num = int(sys.stdin.readline()) num_list.append(num) print(round(sum(num_list)/N)) # 산술평균 num_list = sorted(num_list) print(num_list[len(num_list)//2]) # 중앙값 count_list = Counter(num_list) max(count_list, key=count_list.get) count_list =[k for k, v in count_list.items() if max(count_list.values..

[python] 11728. 배열 합치기

문제 잘못된 풀이 len_A, len_B = map(int, input().split()) A = list(map(int, input().split())) # list로 저장 B = list(map(int, input().split())) # list로 저장 new_list = [] while len(A) >= 0 and len(B) >= 0: if len(A) == 0 and len(B) != 0: # A가 비어 있을 때 a = 100 b = min(B) elif len(A) != 0 and len(B) == 0: # B가 비어 있을 때 a = min(A) b = 100 elif len(A)==0 and len(B) ==0: break else: # 둘 다 안 비어있을 때 a = min(A) b = m..

[python] 9020. 골드바흐의 추측

문제 잘못된 풀이 import sys T = int(input()) def check_prime(number): prime_ = [True] * number #number 갯수만큼 true list 만듦 for i in range(2, int(number**0.5)+1): # 2부터 제곱근 n+1까지 if prime_[i]: # i번째 index가 true이면 for j in range(i*2, number, i): # 각 수의 배수 prime_[j] = False return [i for i in range(2, number) if prime_[i] == True] def find_min(result): min_list = [] for i in range(len(result)): if result[i]..

[python] 4948. 베르트랑 공준

문제 잘못된 풀이 import sys while True: n = int(sys.stdin.readline()) if n == 0: # 0이면 끝 break prime_list = [] for i in range(n, 2*n): # n~2n까지의 수에서 check = 0 for j in range(2, int(i**0.5)+1): # 2 ~ 루트n if i%j == 0: # 나누어 떨어지면 소수 아님 check = 1 break if check == 0: prime_list.append(i) print(prime_list) print(len(prime_list)) 해당 문제도 주어지는 범위 내에서 소수를 구하는 문제이다. 이전 포스팅에서 소수를 다루었듯이 해당 문제도 동일한 로직으로 해결하면 된다고 생각..

[python] 1929. 소수 구하기

문제 잘못된 풀이 M, N = map(int, input().split()) prime_list = [] for i in range(M, N+1): check = 0 if i == 1: continue for j in range(2, i): if i % j == 0: # 나누어 떨어지면 소수아님 check = 1 break if check == 0: # 0이면 소수 prime_list.append(i) for i in prime_list: print(i) 해당 문제도 소수를 구하는 문제이다. 앞서 포스팅했던 두 문제 역시 '소수 구하기'에 대한 문제였기 때문에, 해당 문제도 동일한 알고리즘으로 풀고자 하였다. 해당 문제에 대한 풀이는 올바르다고 생각하지만, '시간초과' 문제로 문제풀이에 실패하였다. 아무..

[python] 2581. 소수

문제 잘못된 풀이 M = int(input()) # M 이상 N 이하의 자연수 중 소수인 것을 모두 골라 소수의 합과 최솟값을 찾음 N = int(input()) prime_list = [] for i in range(M, N+1): # M부터 N까지의 60, 100 check = 0 for j in range(2, i): if i%j == 0: # 소수가 아닐 때, check 값을 1로 만듦 check = 1 break if check == 0: # check prime_list.append(i) if len(prime_list) == 0: print("-1") else: print(sum(prime_list)) print(min(prime_list)) 해당 문제도 앞 게시글처럼 소수를 판단하는 문제이..

728x90
반응형