본문 바로가기
Algorithm/Programmers

[Algorithm] 프로그래머스 - 나머지가 1이 되는 수 찾기

by 홍월이_ 2022. 12. 23.

시작하며...

모든 알고리즘 문제 풀이는 제가 직접 짜서 정답을 맞춘 결과만을 공유합니다.

마지막 'More Solution'은 다른 정답자들 풀이 중 생각지 못했던 부분들이나 좋게 느껴진 풀이법 몇개를 가져와서 공유하였습니다.

 

[Level 1] 나머지가 1이 되는 수 찾기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.


제한사항

  • 3 ≤ n ≤ 1,000,000

입출력 예

입출력 예 설명

입출력 예 #1

  • 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.

입출력 예 #2

  • 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.

 

My Solution

def solution(n):
    return [i for i in range(2, n) if n % i == 1][0]
  • 반복문을 돌면서 n에 i 를 나누어서 나머지가 1인 것들만 남기는 List Comprehension을 만들고 그 중 첫번째의 가져와서 리턴
  • 0으로는 나눌수 없고, 1로 나누면 나머지가 1이 나올수가 없으므로 반복 시작은 2부터 시작하게 구성

 

More Solution

def solution(n):
    return next(i for i in range(2, n) if n%i == 1)

내 풀이와 같지만 위 풀이는 next함수를 이용해 Iterator 에서 첫번째 값을 가져오도록 하였다.

 

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

댓글