🧐 백준 1427, 1676, 2577, 2711 _ 단일 숫자에 대한 리스트를 이용한 접근
🤫 해결의 실마리
🤔 단일숫자나 문자열에 대한 접근이나 리스트로 어떻게 바꿀까?
🙃 단일 숫자의 경우는 다음과 같다.
1. 단일 숫자를 문자열로 바꾼다.
2. 문자열을 리스트에 넣는다.
str_num = str(n) str_list = list(str_num)
🙃 문제에 맞는 연산 진행 후 다시 숫자로 출력하고 싶다면?
3. 리스트값들을 출력
print(*sorted(num, reverse = True) , sep = '') # sep=''를 통해 원소간의 구분자인 공백을 없애줌으로 # 9 9 9 9 9 9 9 9 8 을 # 999999998 로 출력
🧐 사용법에 대한 정리.num = int(input()) str_x = list(str(num)) # ['1', '2', '3', '4', '5', '6'] int_x = list(map(int, str_x)) # [1, 2, 3, 4, 5, 6] print(*int_x) # 1 2 3 4 5 6 print(*int_x, sep="") # 123456
🤔 원하는 원소를 어떻게 지울까? pop, del, remove 함수!
# cf-1 pop a = [1,2,1,3,4,5,1] removed = a.pop(1) # 1번째 index 삭제 단, return 가능 print(a) # [1, 1, 3, 4, 5, 1] print(removed) # 2 <-- pop한 원소를 return 가능
# cf-2 del -> pop과 다르게 리스트의 범위를 지정해 삭제 가능 a = [1,2,1,3,4,5,1] del a[:2] print(a) # [1, 3, 4, 5, 1]
#cf-3 remove -> 위와 달리 지우고자 하는 인덱스가 아닌 값을 입력 for _ in numbers : numbers.remove(3)
🤫 solution_1427# 입력: 999998999 num = list(map(int, input())) # 공백없이 입력받을 때, list에 저장하는 법 print(*sorted(num, reverse = True) , sep = '') # sep=''를 통해 원소간의 구분자인 공백을 없애줌으로 # 9 9 9 9 9 9 9 9 8 을 # 999999998 로 출력 # cf. end옵션을 사용하면 그 뒤에 나오는 출력값과 구분을 짓는 구분자 역할을 한다. print(*sorted(num, reverse = True) , end = " hello ") print(num) # 9 9 9 9 9 9 9 9 8 hello [9, 9, 9, 9, 9, 8, 9, 9, 9] 가 출력
🤫 solution_1676def fac(n): if n <= 1: return 1 else: return n * fac(n - 1) N = int(input()) n = fac(N) # 숫자를 리스트에 한자리씩 넣기 (숫자->문자열) str_num = str(n) str_list = list(str_num) cnt = 0 for i in reversed(str_list): if i == '0': cnt += 1 else: break print(cnt)
🤫 solution_2577
num = [] for i in range(3): n = int(input()) num.append(n) mul = 1 for i in range(3): mul *= num[i] str_x = list(str(mul)) int_x = list(map(int, str_x)) out_ls = [] for i in range(10): out_ls.append(int_x.count(i)) for i in range(10): print(out_ls[i])
🧐 백준 1292 , 4458 풀이 및 사용함수
🤫 해결의 실마리
🤔 리스트 사용의 핵심! 인덱스 슬라이싱
인덱스 슬라이싱에 대한 응용방법을 아래 해설을 통해 볼 수 있는데, [:]를 이용한다.
🤫 solution_1292A, B = map(int, input().split()) num_sequences = [] for i in range(1000): for j in range(i): num_sequences.append(i print(sum(num_sequences[A-1:B]))
🤫 solution_4458for i in [input() for _ in range(int(input()))]: print(i[:1].upper() + i[1:])
🧐 백준 1157 풀이 및 사용 함수
🤫 해결의 실마리
🤔 원소가 겹치지 않아? set 자료구조
주로 사용하는 리스트로 set을 변환하는 방법은 다음과 같다.
a_set = set(a) lst = [] for i in a_set: lst.append(a.count(i))
🤫 solution_1546a = list(str(input()).upper()) a_set = set(a) cnt = [] for i in a_set: cnt.append(a.count(i)) if cnt.count(max(cnt)) <= 1: print(max(a, key = a.count)) else: print("?")
🧐 백준 1292 , 4458 풀이 및 사용함수
🤫 해결의 실마리
🤔 리스트 사용의 핵심! 인덱스 슬라이싱
인덱스 슬라이싱에 대한 응용방법을 아래 해설을 통해 볼 수 있는데, [:]를 이용한다.
🤫 solution_1292A, B = map(int, input().split()) num_sequences = [] for i in range(1000): for j in range(i): num_sequences.append(i print(sum(num_sequences[A-1:B]))
🤫 solution_4458for i in [input() for _ in range(int(input()))]: print(i[:1].upper() + i[1:])
🧐 백준 2309, 2822 풀이 및 사용함수
🤫 해결의 실마리
🤔 정렬을 스스로 해주는 내장함수, sorted를 이용하자!
정렬 함수는 다음 2가지를 사용할 수 있다.
a.sort() sorted(a)
둘의 차이는 바로 반환의 여부이다.
a.sort의 경우, 반환을 해주지 않기에 print문에 넣어주면 오류가 발생하게 된다.
하지만 sorted의 경우, 값의 반환이 이루어질 수 있어서 print문에서도 오류가 발생하지 않는다.
🤔 cf. 출력 조건에 따라 다음과 같이 작성하자!
sorted(idx_list) => [3, 4, 5, 6, 8] *sorted(idx_list) => 3 4 5 6 8
🤫 solution_2309
dwarf = [int(input()) for _ in range(9)] for i in range(len(dwarf)): for j in range(i+1, len(dwarf)): if (sum(dwarf) - (dwarf[i] + dwarf[j])) == 100: dwarf1, dwarf2 = dwarf[j], dwarf[i] # out of index range 조심 dwarf.remove(dwarf1) dwarf.remove(dwarf2) break else: continue print(*sorted(dwarf), sep = "\n")
🤫 solution_2822
score = [int(input()) for _ in range(8)] total = list(sorted(score, reverse=True)) print(sum(total[:5])) idx_list = [] for i in range(5): idx_list.append(score.index(max(score)) + 1) score[score.index(max(score))] = -100 print(*sorted(idx_list)) # sorted(idx_list) => [3, 4, 5, 6, 8] # *sorted(idx_list) => 3 4 5 6 8
🧐 백준 11047 풀이
🤫 solution_11047 (Greedy Algorithm)
N, K = map(int, input().split()) coin = sorted([int(input()) for _ in range(N)], reverse=True) cnt = 0 while K != 0: for i in range(N): if coin[i] > K: i -= 1 else: frequency = K // coin[i] K -= coin[i] * frequency cnt += frequency print(cnt)
'Algorithms > Winter_Algorithm' 카테고리의 다른 글
self.winter.(06). 정렬, pair _백준[1427, 2108, 10814, 11650, 11651, 18870] (0) | 2023.01.09 |
---|---|
self.winter.(05). 소수판별과 에라토스테네스의 체 (시간초과의 저주) (0) | 2023.01.09 |
self.winter.(03).백준 with python 코테기초 (python) (0) | 2023.01.06 |
this.winter plan.(02).백준[1152, 1157, 11720]_문자열 (C++) (2) | 2023.01.05 |
this.winter plan.(01).백준[1065, 1978, 2581, 10814] (C++) (0) | 2023.01.04 |