🧐 입력받기
🤔 단일 입력 ( a = input() 처럼 사용할 때는 default가 str로 아래와 같이 type을 표시할 수 있다.)
a = int(input())
🤔 123456과 같이 공백없이 입력을 list로 받을 때 (a를 list가 아닌 float변수로 받고자 하면 map으로 시작)
num = list(map(int, input()))
🤔 1 2 3 4와 같이 띄어쓰기를 기준으로 입력을 list로 받을 때 (a를 list가 아닌 float변수로 받고자 하면 map으로 시작)
- 공백을 기준으로 입력받은 애들을 잘라서 int로 만든 뒤 (map이 반복되는 애들을 특정 자료형으로 바꿔준다.)
- 이를 list로 감싸줘서 int형의 반복적인 것들이 리스트화 되는 것이다.
a = list(map(float, input().split()))
🤔 위와 달리 enter를 기준으로 아래처럼 입력받을 때
1
2
3
4
a = [int(input()) for i in range(10)]
🤔 num이라는 리스트에 TestCase라는 숫자만큼 리스트 공간을 생성 (2차원)
1 2
3 4
5 6
TestCase = int(input())
num = [list(map(int, input().split())) for _ in range(TestCase)]
# 위의 코드는 앞으로 다음과 같이 사용
num = [list(map(int, input().split())) for _ in range(int(input()))]
이를 다른 언어로 생각해보면
num [ TestCase ][ list(map(int, input().split())) ]
위와 같은 느낌이라 생각하면 된다.
🧐 백준 1546에서 사용한 함수
🤫 해결의 실마리
🤔 최대값, 최소값을 반환하는 함수 max, min
1. 인자 1개일 때 => max(list_name) 2. 인자 2개일 때 => max(arg1, arg2) # arg에서 가장 큰 값을 출력, list라면 list 자체를 출력 3. key나 lambda를 이용 => max(num, key = num.count) # 최빈값을 구하는 식
그렇다면 2번째로 큰 값이나 작은 값은 어떤 방식으로 구하면 될까?
1. 정렬을 해준다. => sort 사용
2. sort 후 1번 인덱스 값을 출력해주면 된다.num = [int(input()) for _ in range(9)] num.sort(reverse=True) print(num[1])
🤔 뒤집어 주는 함수 reversefor i in reversed(str_list): if i == '0': cnt += 1 else: break
위의 코드처럼 reversed를 for문에 넣어 기존 원소를 반대방향에서 접근할 수 있다.
🤔 리스트에 새로운 요소를 추가하는 함수 append, insertlist_name.append(x)는 list의 맨 끝에 객체 x를 추가한다. list_name.insert(idx, x)는 list의 idx에 객체 x를 추가한다.
🤔 특정 값의 길이를 구하는 함수 lenlen(list_name) 는 list_name의 길이를, len(string) 은 string의 길이를 구할 수 있다
🤫 solution_1546N = int(input()) score = list(map(float, input().split())) M = max(score) new_score = [] for i in range(N): new_score.append(score[i]/M*100) new_mean = sum(new_score) / len(new_score) print(new_mean)
🤫 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)
🧐 백준 2562 , 10797사용함수
🤫 해결의 실마리
🤔 리스트에서 조건에 맞는 인덱스를 찾는 함수 ls.index(조건)
ls = [] ls.index(max(ls))
🤔 리스트에서 조건에 맞는 개수를 찾는 함수 ls.count(조건)
num.count(day)
🤔 리스트에 특정 값이 존재하는지 확인하는 법 if a in lsif item in list: print('리스트에 값이 있습니다.') else: print('리스트에 값이 없습니다.')
🤔 리스트에 특정 값이 없는지 확인하는 법 if a not in ls
if item not in list: print('리스트에 값이 없습니다.') else: print('리스트에 값이 있습니다.')
🤫 solution_2562num = [int(input()) for _ in range(9)] print(max(num), num.index(max(num))+1, sep = " \n")
🤫 solution_10797
day = int(input()) num = list(map(int, input().split())) if day in num: print(num.count(day)) else: print(0)
🧐 백준 2506 풀이 및 사용함수
🤫 해결의 실마리
🤔 리스트에 저장된 value 기준의 for문을 이용하자!
for i in range(len(list_name))은 list의 길이만큼 for문을 순회하는 것으로 i의 값이 0, 1, 2, 3, . . . , list길이 만큼 나오지만for i in lst: if (i == 1): . . .
for i in lst: 의 경우 만약 lst = [10, 30, 345, 123]이라면 4회 돌긴 하지만 i의 값이 10일때, 30일때로 돌게 된다.
즉, i에 리스트의 값이 되입되면서 list 원소를 이용한 접근할 수 있다.
🤫 solution_2506
num = int(input()) ox = list(map(int, input().split())) sum, cnt = 0, 0 for i in ox: if (i == 1): cnt += 1 sum += cnt else: cnt = 0 print(sum)
🧐 백준 2576, 9085 풀이
🤫 solution_2576
num = [int(input()) for _ in range(7)] sum, ans = 0, 0 odd_list = [] for i in range(7): odd = num[i] % 2 != 0 if odd: odd_list.append(num[i]) sum += num[i] if len(odd_list) == 0: print(-1) else: print(sum, min(odd_list), sep = "\n")
🤫 solution_9085
T = int(input()) sum_T = [] for i in range(T): N = int(input()) sum_T.append(sum(list(map(int, input().split())))) print(sum_T[i])
'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.(04).백준 with python 코테기초 (python) (0) | 2023.01.07 |
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 |