0729 월요일

김나현·2024년 7월 29일
0

Python

목록 보기
23/48
post-thumbnail

<코드카타 문제풀이>

23번 콜라츠 추측

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.

1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.

일단 num 마다 횟수가 다 다르고 while문을 사용하기로 했다

def solution(num):
    if num == 1:
        return 0
    count = 0
    while num != 1:
        if count >= 500:
            return -1
        if num % 2 == 0:
            num = num / 2    
        else:
            num = num * 3 + 1 
        count = count + 1
        
    
    return count

내가 놓친 포인트 >>>>>>>

num이 계속 바뀌는 게 고민이였는데 바뀔때 마다 횟수를 세야하고? 이게 고민이었는데
변수에다가 저장해주면 되는 것이였다!!

num = num / 2
num = num * 3 + 1

계속 고민이 되서 내가 아직 잘 모르는 재귀함수인가 까지 생각함

while문이 돌아가는 원리
while 뒤에 조건식이 True가 일 . 될 때 (까지) 돌아간다. @_@ 빙글 빙글

처음에 문제를 보면 모든 수를 1로 만든다 하여
while num == 1:
1이 될 때까지 돌아 의도하여 짰는데
이 코드는 1일때 돌꺼야 라는 코드였던 것이었던 것이었던 것

while num !=1: 이렇게 해주면
1이 아니면 돌고 1이면 멈출꺼야 (쏘지니어스)

그리고 return 값은 함수 정의에 포함 이기에 함수 안에 있어야 한다.

24번 서울에서 김서방 찾기

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

제한 사항
seoul은 길이 1 이상, 1000 이하인 배열입니다.
seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
"Kim"은 반드시 seoul 안에 포함되어 있습니다.

입출력 예
seoul return
["Jane", "Kim"] "김서방은 1에 있다"

내가 놓친 포인트 >>>>>>>
일단 seoul 이라는 리스트가 있다는 걸 알 수 있고
문제를 보면 x를 찾아라고 되어있어서 반복문으로 하나하나 확인 해야 하겠지 생각했지만 리스트 함수를 활용하면 바로 한줄로 풀 수 있었던 것이었던 것이다..
문법이 부족해서 어떻게 코드를 짜야할지 헤맸다.

  1. List.index(element)

List 내에서 element의 번호(index)를 리턴합니다.
이 문제에 적용하면

def solution(seoul):코드를 입력하세요
seoul.index('Kim')
'김서방은 '+str(seoul.index('Kim'))+ '에 있다'

또는

def solution(seoul):
    x = seoul.index('Kim')
    return f'김서방은 {x}에 있다'

공백은 연산자(+) 전에 써주는 것.

profile
참 쉽죠? #개발계의 밥아저씨를 꿈꿉니다⋆⁺₊⋆ ☾⋆⁺₊⋆

0개의 댓글