[Python/백준] #1158- [요세푸스 문제]

2021. 12. 4. 01:10·코딩테스트/백준[Python]

[요세푸스 문제]-1158번

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

My answer

import sys

n,k=map(int,sys.stdin.readline().split())
idx,tmp=0,[]
que,que2=[i for i in range(n,0,-1)],[]

while(1):
    if(que==[]):
        if(que2==[]):
            break
        que,que2=que2,que
        que=list(reversed(que))
    if(idx!=k-1):
        que2.append(que[-1])
        que.pop()
        idx+=1
    elif(idx==k-1):
        tmp.append(que[-1])
        que.pop()
        idx=0
for i in range(len(tmp)):
    if(len(tmp)==1):
        print("<%i>"%tmp[i])
    elif(i==0):
        print("<%d"%tmp[i],end=",")
    elif(i==len(tmp)-1):
        print(" %d>"%tmp[i],end="")
    else:
        print(" %d"%tmp[i],end=",")

 

Another answer

n,m=map(int,input().split())
l=[*range(1,n+1)]
r=[]
i=0
while l:
    i=(i+m-1)%len(l)
    r+=[str(l.pop(i))]
print('<',', '.join(r), '>',sep='')
더보기

엄청 헤매던 문제라서 풀고 좋아했는데, 이렇게 쉽게 푼 숏코딩을 보니 언제나처럼 현타가 온다. 나도 밑에 코드처럼 간단하게 짰었는데, 이미 제거한 것 때문에 갯수가 달라져서 어떻게 해야할 지 몰라서 i=(i+m-1)%n 까진했었는데,, 뒤에가 n이 아니라 계속 달라지므로 len(l)을 했어야 했다 ㅜㅜ 그리고 출력부분도 나는 엄청 더럽게 짰는데 저런 한줄로 하는 방법이 있다니... 공부해야겠다. 우선 내 코드 설명을 하자면 스택을 두개만들어서 계속 옮기고 바꾸면서 했다. 제거된거는 pop을 해서 tmp라는 정답리스트에 넣고 k번째가 삭제되는것을 index로 표현해서 계속 초기화해주면서 했다. 나는 근데 코드자체가 직관적?이지 않은것 같다. 그래도 문제를 풀었다는 것에 저기 아래코드 출력부분을 보고 감탄했다..

728x90

'코딩테스트 > 백준[Python]' 카테고리의 다른 글

[Python/백준] #1850- [최대공약수]  (0) 2021.12.04
[Python/백준] #1934- [최소공배수]  (0) 2021.12.04
[Python/백준] #1406- [에디터] [try_again]  (0) 2021.12.03
[Python/백준] #11656- [접미사 배열]  (0) 2021.12.02
[Python/백준] #11655- [ROT13]  (0) 2021.12.01
'코딩테스트/백준[Python]' 카테고리의 다른 글
  • [Python/백준] #1850- [최대공약수]
  • [Python/백준] #1934- [최소공배수]
  • [Python/백준] #1406- [에디터] [try_again]
  • [Python/백준] #11656- [접미사 배열]
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    백준
    DFS
    그리디
    dp
    이것이취업을위한코딩테스트다
    이분탐색
    BFS
    파이썬
    이코테
    나동빈
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바