[프로그래머스] lv0. 숫자 비교하기, 중복된 숫자 개수, 자릿수 더하기, 숫자 찾기, 가장 큰 수 찾기

주연·2023년 1월 26일
0

Python 문제 풀이

목록 보기
8/20
post-thumbnail

사담

우왕 벨로그 거의 1년만이다. 다시 꾸준한 글쓰기 화이팅해보자
프로그래머스 예전엔 level1부터 있었는데 lv0부터 있네 이젠...
계묘년이라 토끼를 그려봤다 아주 23년같고 좋다.

숫자 비교하기

230126

문제

문제 설명
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.

제한사항
0 ≤ num1 ≤ 10,000
0 ≤ num2 ≤ 10,000

입출력 예

num1num2result
23-1
11111
799-1

풀이

def solution(num1, num2):
    answer= 1 if num1 - num2 == 0 else -1
    return answer

우왕...쉬워서 재밌다

  • 다른 사람 풀이
def solution(num1, num2):
    return -1 if num1 != num2 else 1

변수를 안 만든다.
다른 문제를 풀다 알게된 사실은

지역변수를 활용하지 않는 이유

변수를 저장하기 위해서는 비용이 들며 비용이 늘게 되면 시스템 성능의 저하가 올 수 있기 때문이다. 또한 함수화 된 코드는 변수에 담지 않더라도 return 값으로 주면, 차후에 x = solution(someting) 같은 형태로 불러와서 사용이 가능하니, 재사용이 없는 함수 내 지역변수는 굳이 변수에 담지 않는 것을 추천한다고 한다.

중복된 숫자 개수

230127

문제

문제 설명
정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.

제한사항
1 ≤ array의 길이 ≤ 100
0 ≤ array의 원소 ≤ 1,000
0 ≤ n ≤ 1,000

입출력 예

arraynresult
[1, 1, 2, 3, 4, 5]12
[0, 2, 3, 4]10

풀이

def solution(array, n):
    return array.count(n)

특정 요소의 개수를 구하기 위해서는 count 함수를 이용하면 된다.

자릿수 더하기

230129

문제

문제 설명
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요

제한사항
0 ≤ n ≤ 1,000,000

풀이

def solution(n):
    answer = 0
    while n > 0:
        answer += n % 10
        n //= 10
    return answer

ㅎ..그려..정석이 최고지..

  • 다른 사람 풀이
#1
def solution(n):
    return sum(int(i) for i in str(n))
    
#2
def solution(n):
    return sum(list(map(int, str(n))))

이야... 다들 string 형태로 바꾸고 다시 int로 바꿔서 풀었네
보고 익히고 다음에 풀 때 이용하자!!!

숫자 찾기

230201

문제

숫자 찾기
문제 설명
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

제한사항
0 < num < 1,000,000
0 ≤ k < 10
num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

풀이

def solution(num, k):
    num_list = list(map(int, str(num)))
    return num_list.index(k)+1 if k in num_list else -1

숫자형태에서는 못 찾기 때문에 리스트에 넣고 index함수를 통해 자리를 구하려고 했다. 이를 위해 바로 위 문제에서 풀었던 map을 이용했다.
list(map(int, str(num)))를 두 번 쓰려고 했으나 차라리 변수를 생성하는 것이 더 낫다고 생각해 변수를 생성해 풀었다.

  • 다른 사람 풀이
def solution(num, k):
    return -1 if str(k) not in str(num) else str(num).find(str(k)) + 1

나처럼 리스트로 바꿔 할 수도 있지만(list(map)을 써보고 싶었음..)
문자열로 만든 상태에서 찾는 것도 가능하다.

def solution(num, k):
    try:
        return str(num).index(str(k)) + 1
    except ValueError:
        return -1

예외 처리를 이용해 값이 없다고 오류가 뜨면 ~도 설정가능하구나.
예외 처리 배우긴 했는데 딱히 쓸 필요가 없다 생각해 많이 사용하지 않았는데 이럴 때 유용하게 쓰이는구나. not in 대신 쓰는 것으로 가능하니 기억해두자.

가장 큰 수 찾기

230201

문제

문제 설명
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항
1 ≤ array의 길이 ≤ 100
0 ≤ array 원소 ≤ 1,000
array에 중복된 숫자는 없습니다.

입출력 예

arrayresult
[1, 8, 3][8, 1]
[9, 10, 11, 8][11, 2]

풀이

def solution(array):
    return [max(array), array.index(max(array))]
profile
공부 기록

0개의 댓글