알고리즘 문제에 손을 놓은지 너무 오래되어서 다시 브론즈부터 푸는 중...
브론즈 문제부터 못푸는 문제가 보여서 매우 당황했으나 요번주부터 매일 1시간씩 백준 문제를 풀면서 감을 잡고 있다.
파이썬에서 가장 기본적이지만 반드시 알아야 하는 내장함수나 형식 등을 정리해보았다.
이는 백준 알고리즘의 브론즈 단계이며 매우 기본적인 문제 풀이이다.
1. 백준 - 음계
문제 요약 - 1~8까지 순서대로 입력시 ascending , 8~1 거꾸로 입력시 descending , 이외 mixing 출력
music = list(map(int, input().split()))
if music == sorted(music):
print("ascending")
elif music == sorted(music, reverse=True):
print("descending")
else:
print("mixed")
→ sorted 정렬을 활용하여 1부터 8까지의 수 or 8부터 1까지의 수 구하기.
→ sorted()에 넣으면 자동으로 오름차순 정렬 , reverse=True 넣으면 반대로 내림차순
2. 백준 - 나머지
10개의 수를 입력받아 42로 나눈 몫 , 겹치는 수없이 길이 구하기.
n = []
for _ in range(10):
a = int(input())
b = a % 42
n.append(b)
s = set(n)
print(len(s))
→ 중복되는 값이 없어야 한다 = set() 함수를 사용하면 구할 수 있음.
3. 백준 - 단어의 개수
N,M = input().split()
N1 = int(N[::-1])
M1 = int(M[::-1])
if N1 > M1:
print(N1)
else:
print(M1)
→ 숫자를 거꾸로 뒤집는 경우 ⇒ [::-1] 뒤에서부터 카운팅
4. 백준 - 단어의 개수
문제 : 공백으로 이루어진 문자열에서 단어의 개수 카운트.
string = input()
print(len(string.split()))
-> .split() 은 애초에 공백 단위로 나누기 때문에 " " 를 입력할 필요가 없음.
5. 백준 - 단어 공부
문제 : 문자열을 입력받아서 가장 많이 쓰인 알파벳을 대문자로 출력하기
word = input().upper()
word_list = list(set(word))
cnt = []
for i in word_list:
count = word.count
cnt.append(count(i))
if cnt.count(max(cnt)) > 1:
print("?")
else:
print(word_list[(cnt.index(max(cnt)))])
→ count() 함수
- 대소문자를 구분합니다.
- 찾을 x 에 문자 한개를 넣어도 가능하고 문자열을 넣어도 가능합니다.
- __start, __end에 아무것도 넣지 않으면 문자열 처음부터 끝까지 탐색합니다.
- 찾을 x의 범위는 __start <= x < __end 입니다. __start도 포함 __end 는 안 포함.
count(x) -> x 의 개수를 세기
→ set() 함수의 활용
count () 함수 설명
https://ooyoung.tistory.com/76