<백준 12873 - 기념품>
from sys import stdin
N = int(stdin.readline())
Nlist = list()
#캠프 참가자 리스트
for i in range(N):
Nlist.append(i+1)
#돌기~
result = 1
for K in range():
for i in range(K*K):
if result == len(Nlist) :#한번 다 돌면 다시 돌기
result = 1
else:
result += 1
Nlist.remove(result) #걸린 사람 제거
if len(Nlist) == 1 :
break
print(Nlist[0])
- for i in range()
i는 0부터~
- range expected at least 1 argument, got 0 에러
K*K 부분이 0 곱하기 0 임
그리고 제곱 표시는 K**2
무한루프하고 싶으면 while문 쓰자
remove(A)
리스트에서 처음으로 나오는 요소 A 제거
참고 블로그 https://latte-is-horse.tistory.com/200
+문자열에서 제거
1. replace()
replace(A, B)는 문자열의 A를 모두 B로 변경합니다.
replace(A, B, N) 3번째 인자로 삭제할 회수를 전달
2.sub()
sub(A, B, 변수명)는 문자열 변수명에서 A를 찾고 해당하는 부분을 B로 변경
3. for loop
참고 블로그 https://codechacha.com/ko/python-remove-char-in-string/
from sys import stdin
N = int(stdin.readline())
Nlist = list()
#캠프 참가자 리스트
for i in range(N):
Nlist.append(i+1)
print(Nlist)#
#돌기~
result = 0
K=0
while(1):
K += 1
for i in range(K**2):
if result == len(Nlist) :#한번 다 돌면 다시 돌기
result = 1
print(Nlist)#
print(result)#
else:
result += 1
print(Nlist)#
print(result)#
Nlist.remove(Nlist[result-1]) #걸린 사람 제거
result-=1
if len(Nlist) == 1 :
break
print(Nlist)#
print(Nlist[0])
어떻게 돌아가는지 잘 모르겠을 때는 중간중간에 print() - js는 console.log()
result -= 1 !!! 하나 빠지면 자릿수 앞으로 하나씩 당겨진다는 점
근데 안 되네
제곱이 아니라 세제곱이구나
from sys import stdin
N = int(stdin.readline())
Nlist = list()
#캠프 참가자 리스트
for i in range(N):
Nlist.append(i+1)
#돌기~
result = 0
K=0
while(1):
K += 1
for i in range(K**3):
if result == len(Nlist) :#한번 다 돌면 다시 돌기
result = 1
else:
result += 1
Nlist.remove(Nlist[result-1]) #걸린 사람 제거
result-=1
if len(Nlist) == 1 :
break
print(Nlist[0])
돼땅
에러 나면 짜증나지만 됐을 때 기분이 굉장히 좋다 ㅎㅎㅎ
+ 백준 출력 초과
디버깅을 위한 코드 print()를 삭제하지 않고 제출하면 뜬다.
근데 백준에서는 시간초과난다~ 큐를 배워보자
큐(Queue)
참고 블로그 https://velog.io/@lilys2/파이썬알고리즘-Queue의-개념과-백준-12873
https://security04.tistory.com/232
아씽
모르겠다 시간초과나는데
성장해서 다시 돌아온다
그리고 큐를 쓰지 않고 간단하게(시간초과나지 않게) 코딩한 언니들의 코드
N = int(input())
p = list(range(1,N+1))
r = 0
for level in range(1, N):
r = (level**3 + r - 1) % len(p)
p.pop(r)
print(p[0])
주연언니거
p = list(range(1,N+1))
리스트 안에 숫자 넣는 거 간단하게!
p = (p + i**3 - 1) % len(party)
획기적.. 맨 처음에 //랑 %어디에 쓰나 했는데 잘 사용하면 굉장히 유용한 듯
- 그리디 알고리즘 -
그리디(Greedy) 알고리즘은 탐욕법이라고도 하며, 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미합니다
일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구합니다.
그리디 알고리즘을 이용하면 매 순간 가장 좋아 보이는 것만 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않습니다.
<백준 1449번 - 수리공 항승>
from sys import stdin
N, L = map(int, stdin.readline().split())
W = list(map(int, stdin.readline().split()))
W.sort()
tapeNumber = 0
tapeHere = 0 #여기에 제일 오른쪽 테이프가 붙어잇음
for i in W:
if tapeHere < i: #원래는 tapeHere-0.5 < i인데 W값이 모두 정수이므로 상관없음
tapeHere = i+L-0.5 #왼쪽 0.5 남겨 붙여야 함
tapeNumber += 1
print(tapeNumber)
끝!
'✨ Club > EDOC 프로그래밍 동아리 | Algorithm' 카테고리의 다른 글
EDOC 1-2 1회차 (0) | 2022.09.14 |
---|---|
Edoc 엠티 팀대항 코딩 (0) | 2022.08.24 |
EDOC 2022.08 3주차 (0) | 2022.08.16 |
EDOC 2022.08 2주차 (0) | 2022.08.09 |
EDOC 2022.07 4주차 (0) | 2022.07.27 |