본문 바로가기

TIL

[240111] 파이썬: 코드카타 15

[파이썬 코드카타]

나머지가 1이 되는 수 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/87389

 

1) 어떤 문제가 있었나

반복문을 무한하게 돌게 하고자 하는데 range 값으로 구현이 어려웠음

 

2) 내가 시도해본 건 무엇인가

range에 시작값만 입력해보았으나 오류. 구글링을 통해 while 함수 확인

 

3) 어떻게 해결했나

while 함수를 통해 풀었으나, retrun answer 들여쓰기 위치를 잘못 넣어서 여러 번 오류 발생

> 코드 실행 전에 진행 흐름을 명확히 할 필요 있음
def solution(n):
    answer = 0
    while True:
        answer = answer + 1
        if n % answer == 1:
            return answer         
            
#다른 사람 풀이
def solution(n):
    return [x for x in range(1,n+1) if n%x==1][0] 
    #for문에 range 종료값을 n+1로 설정하면 처음 고민했던 부분 해결 가능했음
    #return문 자체를 리스트로 만든 후, 첫 번째 값을 빼온 부분이 인상적


4) 무엇을 새롭게 알았나

- while: 조건문이 참인 동안 while 문에 속한 문장들이 반복해서 수행

while 조건문:    #조건문 대신 Ture를 넣으면 무한루프 
    수행할_문장1

#예시 #점푸투파이썬
coffee = 10
money = 300
while money:
	print("돈을 받았으니 커피를 줍니다.")
	coffee = coffee -1
	print("남은 커피의 양은 %d개입니다." % coffee)
	if coffee == 0:
		print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
		break

 

- raage 개념 재정리: 

range('종료값') #0부터 시작 #range(10) 이면 0~9 
range('시작값', '종료값') #시작값부터 종료값-1까지 # #range(3, 8) 이면 3~7
range('시작값', '종료값', '증분') #시작값부터 증분 후 종료 #range(1,10,3) 이면 1, 4, 7