티스토리 뷰

단계별로 풀어보기를 진행하면 할수록 파이썬 너무 편한 것 같아요.

다양한 내장 함수들이 너무너무 좋아요 ㅎㅎ

 

아래는 제 깃허브 주소입니다. 여기서도 단계별로 풀어보기 정답이 업로드되어 있습니다!

https://github.com/kmi0817/coding_test_practice/tree/main/baekjoon_step/step5

 

GitHub - kmi0817/coding_test_practice: 백준 홈페이지의 단계별로 풀어보기 코드입니다.https://www.acmicpc.net/

백준 홈페이지의 단계별로 풀어보기 코드입니다.https://www.acmicpc.net/step - GitHub - kmi0817/coding_test_practice: 백준 홈페이지의 단계별로 풀어보기 코드입니다.https://www.acmicpc.net/step

github.com


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

 

백준 단계별로 풀어보기 4단계 while문 파이썬 정답

정말 어이없는 착각을 하면서 이 단계별로 풀어보기를 하고 있었습니다,, 입력 관련 내용인데요, 아래 10952번 문제에서 말씀드릴게요. 제 깃허브에서도 아래 코드를 확인하실 수 있으세요! https:/

thisismi.tistory.com

 

728x90