본문 바로가기

프로그래머스 AND 백준/python3

백준 26069번 python 말이 길지만 결국 "ChongChong" 과 같은 line에서 입력되면 count가 하나 늘어나는 구조 + 해당 입력값도 ChongChong과 똑같은 능력을 가진다는 말이다. 풀이: set을 하나 만들고 입력값 둘 중 하나가 set에 있다면 둘 다 set에 add하고 마지막에 length값을 출력한다. set은 중복을 허용하지 않으므로 중복된 값을 add해도 상관 없다. import sys input = sys.stdin.readline N = int(input().rstrip()) dancePeople = set(["ChongChong"]) for _ in range(N): persons = input().rstrip().split(" ") if persons[0] in dancePeople or pe.. 2023. 10. 25.
백준 25192번 python 입력값에 중복이 나오지 않는다면 count++를 해주고 "ENTER"가 나오면 list를 초기화해주면 된다. 다만 관건은 시간복잡도로, list를 이용하여 중복을 제거, (x not in lst), count, index 등을 이용한다면 시간복잡도는 O(n)이 된다. 거기다가 위에서 for문을 돌려야 하므로 결과적으로는 O(n^)이 된다. 즉, list가 아닌 시간복잡도 측면에서 우월한 ( x not in set의 값이 O(1)인) 집합(set) 또는 (사전)dictionary를 이용해야 한다. 풀이: 입력의 최대값은 100,000번 이므로 시간을 줄이기 위해 sys.stdin.readline()을 이용했다. 해당 구문을 사용하여 입력을 받으면 개행문자인 "\n"도 들어오므로 rstrip()을 통해 지워.. 2023. 10. 23.
백준 1037번 python 1과 N은 주어지지 않고 나머지 수만 주어진다. ex) 8의 약수는 1, 2, 4, 8이기 때문에 (4, 2)가 입력된다. 풀이: N의 약수가 순서대로 주어지면 마주보는 값의 곱은 N이다. ex) 1*8 = 8, 2*4 = 8 고로 입력된 값의 최대값과 최소값을 곱해주면 완료. 제곱수 의 경우: ex)25 list의 최소값은 5, 최대값도 5이기 때문에 동일한 결과가 출력된다. N = int(input()) lst = list(map(int, input().split(" "))) print(min(lst)*max(lst)) 2023. 10. 23.