배꼽파지 않도록 잘 개발해요

99클럽 코테 스터디 1일차 TIL - 자연수 뒤집어 배열로 만들기 본문

코딩테스트/99클럽

99클럽 코테 스터디 1일차 TIL - 자연수 뒤집어 배열로 만들기

꼽파 2024. 7. 23. 10:20


99클럽의 스터디를 참가하게 된 이유

배경

  • 문득 어느덧 7월의 마지막 날이 다가오고 있다는 것이 실감났다. 의도치않게 이전 프로젝트에 할애하는 시간이 많아졌기 때문에 코딩테스트는 신경을 쓰지 않고 있었다.
  • 코딩테스트는 개발자라면 준비를 해야되는 부분이기 때문에 반드시 해야하지만, 혼자서 하게되면 미루게 된다.
  • 6주간 매일 1문제씩이라도 풀다보면 노베이스는 탈출하지 않을까 싶어서 3만 원이라는 비용을 내고 스터디에 참가하였다.
  • 난이도는 비기너(프로그래머스 레벨1)로 등록하였다. 자바스크립트 반은 없지만 프론트엔드 지망하시는 분이 있어서 같이 하면 될 것 같다.

이유

  1. 혼자 하게 되면 미루게 되어서 코테 준비는 영원한 숙제가 되어버린다. 코딩테스트 없는 곳에 취업을 해도 막상 회사 일을 하다보면 안 하게 된다고 한다. 
  2. 다른 사람들의 풀이를 보면서 내 풀이를 객관적으로 파악하는 습관을 들이고 싶다. 다른 사람들과 공유를 해야 더 효율적으로 풀 수 있는 방법을 익히고, 다양한 풀이과정들을 학습할 수 있다.

자연수 뒤집어 배열로 만들기

출처 : 프로그래머스 Lv.1

문제 설명

  • 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

제한 조건

  • n은 10,000,000,000이하인 자연수입니다.

입출력 예

n return 
12345 [5, 4, 3, 2, 1]

 

자바스크립트

풀이1

function solution(n) {
    const answer = []
    do {
        answer.push(n % 10)
        n = Math.floor(n / 10)
        console.log(n % 10)
    } while (n > 0)
    return answer
}
  • 배열 하나를 생성한 후, do while 반복문을 통해 원소 하나씩 역순으로 넣어줌.
  • 10으로 나눈 나머지(일의자리수)를 넣어주는 방식으로 진행함.

 

풀이2

function solution(n) {
    const reversedArr = n.toString().split('').reverse();
    return reversedArr.map(el => parseInt(el));
}
  • toString과 split 메서드를 활용하여 숫자를 문자열 숫자 배열로 변환함.
  • reverse를 통해 역순으로 정렬해준 후, map 메서드로 원소들을 정수로 변환해줌.

 

파이썬 풀이

def solution(n):
    # 숫자를 문자열로 변환하여 digits라는 리스트를 생성
    digits = list(str(n))
    
    # 리스트 슬라이싱을 통해 숫자를 역순으로 정렬함
    reversed_digits = digits[::-1]
    
    # 각 자릿수를 정수로 변환하여 리스트로 반환함
    result = [int(digit) for digit in reversed_digits]
    
    return result

 

리스트 컴프리헨션

  • reversed_digits 리스트의 각 원소 digit을 가져와서 이를 정수로 변환한 후 result라는 새로운 리스트에 담음.
result = [int(digit) for digit in reversed_digits]

 

반복문과 조건절

  • 위 리스트 컴프리헨션과 같은 표현임.
result = []
for digit in reversed_digits:
    result.append(int(digit))
728x90