[baekjoon] 2501 약수 구하기

skdus·2021년 12월 27일
0

Algorithms

목록 보기
1/6
post-thumbnail


문법을 제대로 모르는 상태에서 알고리즘을 푸려고 하니, 자꾸 에러가 떠서 시간이 오래 걸렸다.😂😂
그래서 velog에 올리는 김에, 문법들도 같이 정리해보려고 한다!

split() 함수

문자열을 나눌 때 사용한다. 괄호 안에 아무것도 넣지 않으면 공백(띄어쓰기, 탭 등)을 기준으로 문자열을 나눈다. 나누어진 값은 리스트의 요소로 저장되는데, 분할된 문자의 개수만큼 각각을 변수로 지정하는 것도 가능하다.

test = 'Hello world : 헬로 월드'
A, B = test.split(sep=':')
print(A)
print(B)
# --출력값-- 
# Hello world
# 헬로 월드

위의 예시를 보면, ' : ' 기호를 기준으로 두 개의 문자로 나누었다.
A, B 두 개의 변수에 따로 저장을 했지만, 만약 하나의 변수에 저장하고자 한다면, 리스트 타입으로 저장된다.


map() 함수

파이썬의 내장 함수인 map()는 여러 개의 데이터를 한 번에 다른 형태로 변환하기 위해서 사용된다. 따라서, 여러 개의 데이터를map(변환 함수, 순회 가능한 데이터) 담고 있는 list나 tuple을 대상으로 주로 사용하는 함수다.

# 기본 문법
map(변환 함수, 순회 가능한 데이터)

map() 함수는 두번째 인자로 넘어온 데이터가 담고 있는 모든 데이터에 변환 함수를 적용하여 다른 형태의 데이터를 반환한다.

list(map(lambda a: a*2, [1, 2, 3, 4]))
# 출력값 : [2, 4, 6, 8]

map() 함수는 map 타입으로 결과를 리턴한다.
-> map() 함수의 결과값을 list나 tuple로 사용해야 할 경우, list() 내장 함수나 tuple() 내장함수를 사용하자.


✍ 내가 작성한 코드


n, k = map(int, input().split())

list = []

for i in range(1, n+1):
  if n % i == 0: 
    # 약수
    list.append(i)

if len(list) < k:
  print(0)
else:
  print(list[k-1])

코드 보러 가기 👉 2501.py


마치면서..

문제에 N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. 이라는 조건이 있어서 코드에도 반영하는 줄 알고, 시간을 소비했다..😓
꾸준히 연습하면서 푸는 방법을 연습해야겠다!!

피드백은 언제나 환영입니다.💛

[참고 사이트]
https://velog.io/@suasue/Python-map-%ED%95%A8%EC%88%98
https://ooyoung.tistory.com/14

0개의 댓글