[Baekjoon] 함수

백준-단계별로 풀어보기-'함수' 파트 문제들 중 기억해야 할 개념 및 문제들을 기록합니다.

[Baekjoon] 15596. 정수 N개의 합

: 함수를 구현해 봅시다.

📘 15596 문제 링크

def solve(a):
    result = sum(a)
    return result
  • sum() 함수를 통해 완전 간단히 함수를 작성할 수 있다.

⬇ for문을 사용한 아래 코드는 위 코드 보다 시간이 5배는 더 걸린다.

def solve(a) :
    result = 0
    for i in a:
        result += i
    return result


[Baekjoon] 4673. 셀프 넘버

: 함수 d를 정의하여 문제를 해결해 봅시다.

📘 4673 문제 링크

# 1~10000까지의 숫자 저장
all_num = set(range(1, 10001))

# 셀프 넘버가 아닌 수 저장
not_self_num = set()

for i in range(1, 10001):
    for j in str(i):  # 문자열로 반환하면 예를 들어 123을 1, 2, 3으로 접근 가능
        i += int(j)  # ex) 123 + 1 + 2 + 3 =

    not_self_num.add(i)  # 셀프 넘버가 아닌 수를 계속 저장

# 셀프 넘버 set = 전체 수 set - 셀프 넘버가 아닌 수 set
self_num = sorted(all_num - not_self_num)

for i in self_num:
    print(i)
  • ❗ 어떻게 접근할지 막막해서 다양한 코드들을 찾아보고 그 중 제일 괜찮다고 생각하는 코드를 참고하여 이해했다.
  • set() : 중복이 없는 요소들로만 구성된 집합 컬렉션 (순서 x)
  • for문에서 범위를 문자열로 지정 가능하다 .
#ex)
for i in str(123):
	print(i)
 
#output
1
2
3
  • ❗ 이 문제 분류가 함수인 만큼 다음 번에는 def d(n): 함수를 만들어 다른 코드를 작성해봐야 겠다.


[Baekjoon] 1065. 한수

: X가 한수인지 판별하는 함수를 정의하여 문제를 해결해 봅시다.

📘 1065 문제 링크

N = int(input())
hansu = 0

for i in range(1, N+1):
    if i <= 99: #100 미만의 수는 하나 또는 두 수만 비교하므로 모든 수가 등차수열 즉, 한수가 될 수 있다.
        hansu += 1

    else:
        num = list(map(int, str(i)))  #ex) 123 -> [1, 2, 3]
        if num[0] - num[1] == num[1] - num[2]:
            hansu += 1
print(hansu)
  • ❗ 등차수열 구하는 방법을 어렵게 생각했는데 알고 보니 별 거 아니었다...

좋은 웹페이지 즐겨찾기