티스토리 뷰
포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.
문제를 보자.

포스팅 전에 소리 한 번만 지르고 시작하겠다.
악!
코드
n,m = map(int,input().split())
array= [i+1 for i in range(n)]
visited = [0 for i in range(n)]
memory=0
while sum(visited) != n :
for i in range(n):
memory += 1
if (memory % m) == 0 and visited[i] == 0:
visited[i] = 1
print(i+1,end=', ')
else:
memory %= m
틀린코드다, 빈자리를 계산 안 하고 문제 풀었다.
빈자리 계산한 코드
n,m = map(int,input().split())
array= [i+1 for i in range(n)]
memory=0
result=[]
while sum(array):
for i in range(n):
if array[i] != 0 :
memory += 1
if (memory % m) == 0 and array[i] != 0:
array[i] = 0
result.append(i+1)
else:
memory %= m
print('<' +', '.join(str(i) for i in result) +'>')
악!
시간초과다.
ㅋㅋㅋㅋ 생각해보니 5000 5000을 입력값으로 받으면 최소 2500만 연산 수가 필요하고 연산마다 대략 9번 정도 연산이 필요하니, 최대 연산 수가 2억이 넘게 나온다. ( 이렇게 계산하는 게 맞나..?)
당~연히 시간초과지 2초 주는데
그럼 어떻게 해야하나.
코드
n,m = map(int,input().split())
array= [i+1 for i in range(n)]
memory = 0
result = []
while len(array) > 0:
memory = (memory + (m-1)) % len(array)
result.append(array.pop(memory))
print('<' +', '.join(str(i) for i in result) +'>')
훨씬 간결하고 시간복잡도 또한 적다.
나는 방문 배열을 만들어서 해결했는데, len(array)로 나눌 생각은 하지 못했다.
수학적 사고능력을 키워야겠다.
배운 점
1. "구분자". join(배열)로 값들 사이에 구분자를 넣어서 출력할 수 있다.
'백준' 카테고리의 다른 글
| 백준 1475 문제풀이 [python] (0) | 2023.06.27 |
|---|---|
| 백준 2444번 문제풀이 [python] (0) | 2023.06.27 |
| 백준 2490 문제풀이 [python] (0) | 2023.06.27 |
| 백준 1010 문제풀이 [python] (0) | 2023.06.27 |
| 백준 1934 문제풀이 [python] (0) | 2023.06.26 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ys.k
- 코딩테스트 준비
- samron3
- static
- 김영한
- 백준 피보나치
- 기술스택
- lord of sql
- 자바
- spring
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- 상속
- 김영한 실전 자바 기초
- zixem
- 김영한 실전 자바 기본
- Los
- 백준
- 상품을 구매한 회원 비율 구하기 파이썬
- los 15단계
- webhacking.kr
- 김영한 실전 자바 중급
- samron
- 프로그래머스
- java
- 백준 피보나치 수열
- 스프링
- extends
- 프로그래머스 상품을 구매한 회원 비율 구하기
- los 15
- 코딩테스트
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
글 보관함
250x250