Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- research intern
- 3d editing
- plug-and-play
- style align
- diffusion
- video editing
- video generation
- prompt2prompt
- DP
- diffusion models
- magdiff
- 코딩테스트
- VirtualTryON
- 네이버 부스트캠프 ai tech 6기
- visiontransformer
- BOJ
- 3d generation
- Vit
- 논문리뷰
- 프로그래머스
- Python
- transformer
- ami lab
- image editing
- image generation
- ddim inversion
- Programmers
- image2image translation
- 코테
- ddpm inversion
Archives
- Today
- Total
평범한 필기장
[BOJ_Python] 21314_민겸 수 본문
https://www.acmicpc.net/problem/21314
내가 생각한 풀이방식
- 최소값을 구하는 방법 : K가 나오기 전까지 M의 개수를 카운트하고 K가 나오면 정답에 10 ** (그때까지 나온 M의 개수 - 1)을 이어 붙이고 5를 뒤에 붙여준다. 그리고 민겸 수가 K로 끝나면 앞의 방식대로 수행하고 그대로 정답을 출력하면 되지만 M으로 끝날 경우, 앞에서와 같이 정답에 10 ** (그때까지의 M의 개수 -1)을 이어붙인다.
- 최대값을 구하는 방법 : K가 나오기 전까지 M의 개수를 카운트하고 K가 나오면 정답에 5 * (10 ** (그때까지 나온 M의 개수))를 이어 붙인다. 마지막이 K로 끝나면 앞의 방식대로 하고 정답을 출력하지만 그렇지 않은 경우 끝날 때까지의 M의 개수를 카운트하고 그 만큼의 1을 정답에 붙여준다. (저는 여기서 10 ** (M의 개수 -1)로 생각해서 틀렸습니다ㅜㅜ MMM이면 111이 당연히 최대라는걸 생각을 못했네요.)
내 오답 코드
import sys
lst = list(map(str, sys.stdin.readline().rstrip()))
print(lst)
def lst_min(lst):
answer = ''
cnt = 0
for i in lst:
if i != 'K':
cnt += 1
else:
if cnt != 0:
answer += str(10 ** (cnt-1))
cnt = 0
answer += str(5)
if cnt != 0:
answer += str(10 ** (cnt - 1))
return int(answer)
def lst_max(lst):
answer = ''
cnt = 0
for i in lst:
if i == 'K':
answer += str(5 * (10 ** (cnt)))
cnt = 0
else:
cnt += 1
if cnt != 0:
answer += str(10 ** (cnt - 1))
return int(answer)
min = lst_min(lst)
max = lst_max(lst)
print(max)
print(min)
정답 코드
import sys
lst = list(map(str, sys.stdin.readline().rstrip()))
def lst_min(lst):
answer = ''
cnt = 0
for i in lst:
if i != 'K':
cnt += 1
else:
if cnt != 0:
answer += str(10 ** (cnt-1))
cnt = 0
answer += str(5)
if cnt != 0:
answer += str(10 ** (cnt - 1))
return int(answer)
def lst_max(lst):
answer = ''
cnt = 0
for i in lst:
if i == 'K':
answer += str(5 * (10 ** (cnt)))
cnt = 0
else:
cnt += 1
if cnt != 0:
for _ in range(cnt):
answer += '1'
return int(answer)
min = lst_min(lst)
max = lst_max(lst)
print(max)
print(min)
다른분들의 코드를 보면 굳이 함수로 안만들고 한번에 하시던데 저는 또 따로따로 하다보니 코드도 길어지고 복잡해보이네요 ㅎㅎ
처음에 최대값을 구할 때, M으로 끝날 경우 M하나하나를 1로 이어붙이는걸 생각을 못해서 혼자서 뭐가 틀렸는지 찾는데 시간을 엄청썼는데 다음 번에는 좀 차분히 생각해보고 문제를 풀어봐야겠네요!!
'코딩 테스트 준비 > BOJ' 카테고리의 다른 글
[BOJ_Python] 16206_롤케이크 (0) | 2023.03.24 |
---|---|
[BOJ_Python] 1080_행렬 (0) | 2023.03.23 |
[BOJ_Python] 20300_서강근육맨 (0) | 2023.03.21 |
[BOJ_Python] 11508_2+1 세일 (0) | 2023.03.19 |
[BOJ_Python] 14916_거스름돈 (0) | 2023.03.18 |