[BOJ 1681번] 줄 세우기(Python)

2024. 1. 18. 20:44· 코딩 테스트 준비/5정한
목차
  1. 📝 문제
  2. ✅ 풀이

📝 문제

💡 민승이는 N(1 ≤ N ≤ 1,000,000)명의 학생들에게 양의 정수로 된 라벨을 붙이려고 한다.
하지만 모든 학생들은 숫자 L(0 ≤ L ≤ 9)이 자신의 라벨 숫자에 포함되길 원치 않는다.

문제는 학생들에게 숫자 L을 쓰지 않고 최소한 작은 N개의 양의 수 세트를 라벨링 할 때
학생들이 받는 라벨 중 가장 큰 수가 몇인지를 구하는 것이다.
⚙️ 입력 : 첫째 줄에 N과 L이 공백으로 구분되어 주어진다.
⚙️ 출력 : 첫째 줄에 민승이가 학생들에게 붙이는 라벨 중 가장 큰 수를 출력한다.

 

문제링크

 

1681번: 줄 세우기

민승이는 가장 작은 10개의 수 2, 3, 4, 5, 6, 7, 8, 9, 20, 22를 사용하여 라벨을 붙일 수 있다.

www.acmicpc.net


✅ 풀이

n, l = map(int, input().split())
i = 1
cnt = 0

while True:
    if str(l) not in str(i):
        cnt += 1

    if cnt == n:
        break

    else:
        i += 1

print(i)

# 항복한 코드
n, l = map(int, input().split())
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers.remove(l)
cnt = []
answer = ''

if l == 0:
    temp = 9

    while n > temp:
        cnt.append(temp)
        temp *= 9

    cnt.reverse()
    k = n

    for i in range(len(cnt)):
        t, k = divmod(k, cnt[i])
        answer += str(numbers[t-1])

else:
    temp = 8

    while n > temp:
        cnt.append(temp)
        temp *= 9

    cnt.reverse()
    k = n

    for i in range(len(cnt)):
        t, k = divmod(k, cnt[i])
        answer += str(numbers[t])

print(answer + str(numbers[k-1]))
💡 사실 노가다로 풀고 싶지 않아서,
모든 자리에 올 수 있는 숫자의 경우의 수를 계산하는 방식으로 진행했었다.
그런데 계속해서 반례를 찾아가며 수정하는 일이 너무 스트레스 받아서
결국 노가다로 푸는 방법을 선택했다.

카운팅 결과가 인원 수와 같아질 때까지 반복을 해주었으며,
1부터 1씩 더해가며, 만약 숫자에 싫어하는 번호가 없다면 카운팅 해주었다.
저작자표시 비영리 변경금지 (새창열림)
  1. 📝 문제
  2. ✅ 풀이
'코딩 테스트 준비/5정한' 카테고리의 다른 글
  • [BOJ 1157번] 단어 공부(Python)
  • [BOJ 1145번] 적어도 대부분의 배수(Python)
  • [BOJ 1110번] 더하기 사이클(Python)
  • [BOJ 1673번] 치킨 쿠폰(Python)
zzzini
zzzini
종착지는 어디인지 모르지만
zzzini
나의 표류일지
zzzini
전체
오늘
어제
  • 분류 전체보기 (307)
    • ASAC 빅데이터 분석가 4기 (44)
      • Python기초 (6)
      • SQL (3)
      • Matplotlib & Seaborn (2)
      • Data Handling (6)
      • Web Crawling (3)
      • Machine Learning (9)
      • Deep Learning (10)
      • 데이터 분석 (1)
      • 기타 (2)
      • 수학 (2)
    • 코딩 테스트 준비 (168)
      • 5정한 (132)
      • 카카오 (14)
      • PCCP & PCCE (3)
      • 프로그래머스 (19)
    • 자격증 (35)
      • AWS CLF-C02 (18)
      • AWS SAA-C03 (1)
      • Tableau Desktop Specialist (5)
      • Tableau Certified Data Anal.. (11)
    • 독서 (17)
    • Tech (23)
      • Tableau (10)
      • AI (4)
      • Flask (1)
      • Node.js (2)
      • Cloud Computing (2)
      • Git & GitHub (1)
      • Notion API (1)
      • Linux (2)
    • Projects (2)
    • 알고리즘 공부 (6)
    • 🎵 (11)

블로그 메뉴

  • 글 쓰기
  • 홈
  • 방명록

공지사항

hELLO · Designed By 정상우.v4.2.1
zzzini
[BOJ 1681번] 줄 세우기(Python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.