티스토리 뷰
단계별로 풀어보기를 진행하면 할수록 파이썬 너무 편한 것 같아요.
다양한 내장 함수들이 너무너무 좋아요 ㅎㅎ
아래는 제 깃허브 주소입니다. 여기서도 단계별로 풀어보기 정답이 업로드되어 있습니다!
https://github.com/kmi0817/coding_test_practice/tree/main/baekjoon_step/step5
1. 최소, 최대 (10818번)
- max(literable) : 반복 가능한 데이터 타입 내 원소 중 최대값을 반환합니다.
- min(literable) : 반복 가능한 데이터 타입 내 원소 중 최소값을 반환합니다.
- len() : 문자열이나 리스트, 튜플, 집합 등의 길이(혹은 원소 개수)를 반환합니다.
def check_and_make_int(num) :
number = int(num)
if number >= -1000000 and number <= 1000000 :
return number
else :
exit()
N = int(input())
if N < 1 or N > 1000000 :
exit()
numbers = list(map(check_and_make_int, input().split()))
if len(numbers) == N :
smallest = min(numbers)
largest = max(numbers)
print(smallest, largest)
else :
print("입력한 정수의 개수가 " + str(N) + "과 동일하지 않습니다.")
2. 최댓값 (2562번)
- index(value) : 리스트의 메소드로, 해당 value 값의 인덱스를 반환합니다.
n = 9
numbers = list()
for i in range(n) :
num = int(input())
if num < 100 :
numbers.append(num)
else :
print("100보다 작은 자연수를 입력해야 합니다.")
exit()
print(max(numbers))
print(numbers.index(max(numbers)) + 1)
3. 숫자의 개수 (2577번)
파이썬이 count() 함수 등 참 편리한데, 직접 count() 함수 기능을 구현하지 않고 불러서 사용하는 게 코딩 실력에 도움이 될지 모르겠네요,,? 그래서 count() 내장 함수 사용 코드와 count() 함수를 직접 구현한 코드를 모두 작성해 보았습니다.
- count("문자열") : 문자열 내 "문자열"이 몇 번 반복되는지 반환합니다.
# count() 내장 함수 사용
A = int(input())
B = int(input())
C = int(input())
if A in range(100, 1000) and B in range(100, 1000) and C in range(100, 1000) :
res = A * B * C
for i in range(10) :
print(str(res).count(str(i)))
# count() 직접 구현
def my_count(res) :
count_list = list()
for i in range(10) :
cnt = 0
for c in res :
if str(i) == c :
cnt += 1
count_list.append(cnt)
return count_list
A = int(input())
B = int(input())
C = int(input())
result = A * B * C
cnt_list = my_count(str(result))
for e in cnt_list :
print(e)
4. 나머지 (3052번)
이것도 집합(set)을 사용해서 코드가 정말 간단해졌습니다!
moduler_set = set()
for i in range(10) :
n = int(input())
if n > -1 and n <= 1000 :
moduler_set.add(n % 42)
print(len(moduler_set))
5. 평균 (1546번)
여기선 각 점수가 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다라는 범위를 체크하는 코드는 뺐어요.
원래 코테 볼 때 범위 체크를 하지 않아도 되는 건가,,,?
# 점수/M*100 만드는 함수 (M: 최대값)
def make_newScore(m, score_list) :
new_score_list = list()
for score in score_list :
new_score_list.append(score/m*100)
return new_score_list
# 평균 구하는 함수
def make_avg(score_list) :
return sum(score_list)/len(score_list)
# 과목 개수 입력
N = int(input())
if N > 1000 or N < 0 :
exit()
# 과목별 점수 입력
original_score_list = list(map(int, input().split()))
if len(original_score_list) != N :
exit()
# 과목 내 최대값 구하기
M = max(original_score_list)
# 함수 적용 및 출력
new_score_list = make_newScore(M, original_score_list)
print(make_avg(new_score_list))
6. OX퀴즈 (8958번)
import sys
n = int(input())
for i in range(n) :
ox = sys.stdin.readline().rstrip()
final_score = 0
serial_o = 0
for c in ox :
if c == "O" :
serial_o += 1
final_score += serial_o
elif c == "X" :
serial_o = 0
print(final_score)
7. 평균은 넘겠지 (4344번)
최대한 함수를 활용해 보려고 했습니다. 그런데 코드가 왜인지 좀 더러워 보이는 느낌,,
- 리스트.pop(index) : 해당 index에 해당하는 값을 반환한 후 해당 요소는 리스트에서 제거됩니다.
import sys
def check_range(lis) :
for e in lis:
if e >= 0 and e <= 100 :
ret = True
else :
print("점수의 범위가 틀렸습니다.")
exit()
return ret
def compute_avg(lis) :
return sum(lis)/len(lis)
def compute_percentage(avg, lis) :
higherScore_list = list()
for e in lis :
if e > avg :
higherScore_list.append(e)
return round(len(higherScore_list) / len(lis) * 100, 3)
###
C = int(input())
for i in range(C) :
case = list(map(int, sys.stdin.readline().split()))
std_N = case.pop(0) # 0번째 값 취득 및 삭제
if check_range(case) :
avg = compute_avg(case)
above_avg_percentage = compute_percentage(avg, case)
# print("{:.3f}%".format(above_avg_percentage))
print(f"{above_avg_percentage:.3f}%")
백준 단계별로 풀어보기 4단계 파이썬 정답코드는 아래 링크를 타고 가시면 확인하실 수 있습니다 :)
https://thisismi.tistory.com/10
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
백준 단계별로 풀어보기 7단계 문자열 파이썬 정답 (0) | 2022.01.02 |
---|---|
백준 단계별로 풀어보기 6단계 함수 파이썬 정답 (0) | 2021.12.31 |
백준 단계별로 풀어보기 4단계 while문 파이썬 정답 (0) | 2021.12.30 |
백준 단계별로 풀어보기 3단계 for문 파이썬 정답 (0) | 2021.12.29 |
백준 단계별로 풀어보기 2단계 if문 파이썬 정답 (0) | 2021.12.28 |