예꾸
개발자국
예꾸
전체 방문자
오늘
어제
  • 분류 전체보기 (111)
    • CS (6)
      • 데이터베이스 (5)
      • 운영체제 (0)
      • Computer Architecture (1)
    • 끄적끄적 (4)
    • 이론 (29)
      • 알고리즘 (18)
      • 자료구조 (4)
      • WEB (2)
      • JS (2)
      • Git (2)
      • Python (1)
    • 면접준비 (3)
      • Vue (1)
      • Design Pattern (1)
      • Frontend (1)
    • 개발기술 (20)
      • Git PUSH 자동화 (3)
      • VUE (1)
      • Linux (2)
      • MERN Stack (2)
      • React기반 Gatsby로 블로그 개발하기 (6)
      • Typescript (0)
      • 감정일기장(React) (3)
      • CI CD (3)
    • 코드트리 (6)
      • 블로그 챌린지 (3)
      • 모의시험 (3)
    • 취업준비 (3)
      • 코딩테스트 후기 (3)
    • 프로그래머스 (8)
      • SQL (7)
      • 알고리즘 (1)
    • 백준 (31)
      • 그리디(탐욕법) (6)
      • 구현 (5)
      • 그래프탐색(dfs, bfs) (5)
      • 완전탐색 (5)
      • 문자열 (5)
      • 누적합 (2)
      • DP(다이나믹 프로그래밍) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스 SQL
  • 백준 문자열
  • 백준 완전탐색
  • 백준 구현
  • 코드트리
  • 운영체제
  • 코딩테스트
  • 프로그래머스
  • React
  • JS
  • 백준 그래프탐색
  • 코드트리 추천
  • 나만의공부노트
  • javascript
  • 컴퓨터 시스템의 구조
  • 백준 그리디
  • 자료구조
  • gatsby
  • 알고리즘
  • 코딩테스트실력진단

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
예꾸

개발자국

[백준 15721] 번데기 - python
백준/완전탐색

[백준 15721] 번데기 - python

2021. 6. 12. 15:55

https://www.acmicpc.net/problem/15721

 

15721번: 번데기

예를 들어 7명이 있고, 16번째 등장하는 “뻔”을 부른 사람의 번호를 알고 싶다면 입력은 7 16 0이다. 4명이 있고 6번째 등장하는 “데기”를 부른 사람의 번호를 알고 싶다면 입력은 4 6 1이며, 이

www.acmicpc.net

 

문제 풀이

  • t개까지의 0또는 1의 개수인 m과 t가 같아질 때까지 while문을 반복하도록 했습니다
  • ppun이라는 list를 만들어 while문 안에서 0, 1, 0, 1, (0)*n, (1)*n 을 append 하도록 했습니다
  • 번과 데기는 한번 반복할 때마다 1씩 증가하여 4, 5, 6, 7... 번씩 반복됩니다
  • 그래서 len(puun)을 2로 나눈 개수가 t보다 클 경우와 아닌 경우로 나누어 코드를 작성했습니다
  • len(ppun)//2의 개수가 t보다 작을 경우에는 n을 1증가시켜 while문을 다시 진행하게 하였고, 큰 경우는 ppun만큼 for문을 돌려 total을 1씩 증가시키고 찾으려는 문자(0, 1)가 나올 때마다 m의 개수를 count하도록 하였습니다
  • 결국 원하는건 total값에서 학생수를 나눈 값인데, 만약 total이 12이고 학생수가 4면 0이 나오게 됩니다
    • 그래서 student라는 list를 따로 만들어서 [0, 1, 2, 3...a-1]를 담아주었고, total % a한 값에서 -1을 한 값을 index로 student에서 찾아 답을 구하도록 했습니다
a = int(input()) # 학생수
t = int(input()) # 원하는 개수
want = int(input()) # 원하는 문자
n = 2 # 반복횟수
m = 0 # t개까지의 0 or 1의 개수
total = 0
student = [i for i in range(a)]
ppun = []
while m != t:
    ppun += [0, 1, 0, 1]
    for _ in range(n):
        ppun.append(0)
    for _ in range(n):
        ppun.append(1)

    if len(ppun) // 2 >= t:
        # print(len(ppun))
        for i in range(len(ppun)):
            total += 1
            if ppun[i] == want:
                m += 1
                if m == t:
                    # print(total, m)
                    break
    
    else:
        n += 1

print(student[total % a - 1])
        
    
    '백준/완전탐색' 카테고리의 다른 글
    • [백준 18312] 시각 - python
    • [백준 19532] 수학은 비대면강의입니다 - python
    • [백준 2231] 분해합 - python
    • [백준 2798] 블랙잭 - python
    예꾸
    예꾸
    비전공자 옒의 개발이야기💻

    티스토리툴바