[Coding Test]
[백준] 1940 파이썬(python) : 주몽
1940번 : 주몽 import sys n = int(sys.stdin.readline()) m = int(sys.stdin.readline()) number = list(map(int, sys.stdin.readline().split())) number.sort() #1 cnt, tmp = 0, 0 start, end = 0, n-1 #2 while start m: #6 end -= 1 else: #7 cnt += 1 start += 1 end -= 1 print(cnt) #1 : 재료들을 고유한 번호에 따라 정렬 #2 : 두 개의 포인터가 각각 끝을 가..
[백준] 2018 파이썬(python) : 수들의 합 5
2018번 : 수들의 합 5 import sys n = int(sys.stdin.readline()) start, end = 0, 0 cnt, tmp = 0, 0 while end n: #3 tmp -= start start += 1 else: #4 cnt += 1 end += 1 tmp += end print(cnt) #1 : end포인터가 n의 값을 초과하지 않을때까지 반복 #2 : 현재 누적값이 n보다 작을때 end포인터 1증가 후 현재값에 누적합 #3 : 현재 누적값이 n보다 클때 start포인터의 값을 누적값에서 뺀뒤 start포인터 증가 #4 : 누적값과 n이 같은 경우 cnt 1증가 end포인터 1증가 그리고 누적값에 end포인터의 값 추가 (이 다음 #3이 수행될것) O(n^2)로 풀면 시..
[백준] 11659 파이썬(python) : 구간 합 구하기 4
11659번 : 구간 합 구하기 4 import sys n, m = map(int, sys.stdin.readline().split()) number = list(map(int, sys.stdin.readline().split())) sum_number = [0] * (n + 1) tmp = 0 for i in range(n): tmp += number[i] sum_number[i+1] = tmp for _ in range(m): a, b = map(int, sys.stdin.readline().split()) print(sum_number[b-1+1] - sum_number[a-1]) 누적 합 알고리즘
[백준] 25501 파이썬(python) : 재귀의 귀재
25501번 : 재귀의 귀재 힌트를 따라가면 맞출 수 있는 문제다. import sys t = int(sys.stdin.readline()) for _ in range(t): string = sys.stdin.readline().rstrip() cnt = 0 def recursion(string, l, r): global cnt cnt += 1 if l >= r: return 1 elif string[l] != string[r]: return 0 else: return recursion(string, l+1, r-1) def isPalindrome(string): return recursion(string, 0, len(string)-1) print(isPalindrome(string), cnt) 파이썬..
[백준] 6603 파이썬(python) : 로또 - (★)
6603번 : 로또 조합론을 이용한 풀이) import sys from itertools import combinations while True: s = list(map(int, sys.stdin.readline().split())) #1 k = s.pop(0) #2 if k == 0: #3 break for tmp in combinations(s, 6): #4 nums = list(tmp) #5 nums.sort() print(*nums) print() #1 : 숫자를 입력받고 #2 : 리스트의 첫번째 원소를 k로 지정(리스트의 pop()메서드는 원소를 뺀 후 자동으로 재정렬) #3 : 만일 k가 0이면 반복문 탈출 #4 : 리스트 s에서 6개의 숫자를 꺼내는 튜플을 만들고 #5 : 정렬을 위해 튜플을..
[백준] 4358 파이썬(python) : 생태학 - (★)
4358번: 생태학 *해시를 정렬하는 방법은 리스트에 차례대로 넣어서 원하는 순서대로 정렬하는 방법이 있다. hash = {} while True: try: tree = input() if tree not in hash: hash[tree] = 1 else: hash[tree] += 1 except EOFError: break arr, num = [], 0 for key, value in hash.items(): arr.append([key, value]) num += value arr.sort() for i in arr: print(f'{i[0]} {i[1]/num * 100:.4f}') 11718번: 그대로 출력하기