[프로그래머스 / Level 2] 다음 큰 숫자 (파이썬)

2022. 9. 18. 22:49·🎲 알고리즘 공부/프로그래머스

[문제]

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.

  • 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.
  • 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.
  • 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.

예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.

자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.

 

제한 사항

  • n은 1,000,000 이하의 자연수 입니다.

입출력 예시

 

 

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

 

프로그래머스

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

programmers.co.kr

 


🎨 풀이

💡 전체 코드

def solution(n):
    answer = 0
    one_count = format(n, 'b').count('1')
    
    while(answer == 0):
        n += 1
        tmp = format(n, 'b').count('1')
        
        if tmp == one_count:
            answer = n
            
    return answer

> 핵심 : while문 돌리기 & 비교해주기~

 

 

 

🍦 코드 설명 (실행 순서대로 나열)

#solution

    answer = 0
    one_count = format(n, 'b').count('1')

1. 변수와 스택를 초기화한다.

 - answer : 정답

 - one_count : n을 2진수로 변환했을 때의 1의 갯수.

 

 

 

 

#solution - 인형 집어 올리기 & 비교해주기

    while(answer == 0):
        n += 1
        tmp = format(n, 'b').count('1')
        
        if tmp == one_count:
            answer = n
            
    return answer

2. answer가 0이라면 while문을 계속 반복한다.

3. n에 1을 더해준다.

4. tmp에 n을 2진수로 바꿨을 때 생기는 1의 갯수를 넣어준다.

5. 만약 tmp에 있는 수가 one_count랑 같다면 answer에 n을 넣어준다.

 - answer에 n이 들어간 후에는 자동으로 while문이 종료된다.

 - 조건이 3개나 있었지만, 나머지 두 개를 합쳐보면 "n보다 큰 자연수 & 가능한 수 중 가장 작은 수" 라서 while문으로 천천히 돌리면서 보면 된다.

6. answer을 return 해준다.

 


끝~

⭐ 느낀점

> 이거는 level 2 치고는 좀 쉬운 문제였다는 생각도 든다. 연습문제라서 그런 것 같다. ㅠㅠ 카카오 코테를 위해 그 전에 레벨 2를 다 풀고 싶긴 한데,, 그건 현실적으로 가능할랑가 모르겠으니 목표 잘 잡고 실천해봐야겠다잉

저작자표시 (새창열림)

'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 / Level 2] 피보나치 수 (파이썬)  (0) 2022.09.20
[프로그래머스 / Level 2] 숫자의 표현 (파이썬)  (0) 2022.09.19
[프로그래머스 / Level 2] 올바른 괄호 (파이썬)  (0) 2022.09.17
[프로그래머스 / Level 1] 크레인 인형뽑기 게임 (파이썬)  (0) 2022.09.16
[프로그래머스 / Level 1] 성격 유형 검사하기 (파이썬)  (0) 2022.09.15
'🎲 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 / Level 2] 피보나치 수 (파이썬)
  • [프로그래머스 / Level 2] 숫자의 표현 (파이썬)
  • [프로그래머스 / Level 2] 올바른 괄호 (파이썬)
  • [프로그래머스 / Level 1] 크레인 인형뽑기 게임 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    오블완
    코드업
    프로그래머스
    코린이
    스프링부트
    신입일기
    티스토리챌린지
    codeup
    50문답
    정보처리기사
    정처기
    피보나치수
    til
    오버워치
    폰켓몬
    코민이
    파이썬
    백준
    6월 목표
    컨텐더스
    일기
    행렬덧셈
    찬양추천
    충무로
    카카오
    nodejs
    BOJ
    연습문제
    스프링 부트
    코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[프로그래머스 / Level 2] 다음 큰 숫자 (파이썬)
상단으로

티스토리툴바