일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 영어원서읽기
- 화상영어
- 30분
- 매일
- Problem Solving
- 괜찮음
- FIT XR
- 잡생각
- 스탭퍼
- 프로젝트
- leetcode
- English
- 미드시청
- 뭐든
- realclass
- 3줄정리
- 링피트
- 개발자
- 10분
- 영어공부
- 운동
- Daily Challenge
- 만화도
- Writing
- 읽기
- 파비최
- 월간
- 사이드
- 리얼 클래스
- 쓰릴오브파이트
Archives
- Today
- Total
파비의 매일매일 공부기록
[BOJ] 2037 본문
https://www.acmicpc.net/problem/2037
2037번: 문자메시지
첫째 줄에 p와 w가 주어진다. (1 ≤ p, w ≤ 1,000) p는 버튼을 한번 누르는데 걸리는 시간이고, w는 AC와 같은, 같은 숫자인 문자를 연속으로 찍기 위해 기다리는 시간을 의미한다. 그리고 둘째 줄에는
www.acmicpc.net
주어진 조건들만 맞춰서 구현하면 되는 문제.
같은 그룹인지를 찾는 방법을 개선 할 수도 있을 것 같음.
# BOJ 2037
ar = ['', '', 'ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
def get_rept(ch):
for i in range(2, 10):
if ch in ar[i]:
return (i, ar[i].find(ch) + 1)
p, w = map(int, input().split(' '))
s = input()
if len(s) < 2:
print(p * get_rept(s[0]))
else:
res = p * get_rept(s[0])[1]
l = len(s)
for i in range(1, l):
if s[i] == ' ':
res += p
continue
prev = get_rept(s[i - 1])
curr = get_rept(s[i])
res += p * curr[1]
if not prev:
continue
if prev[0] == curr[0]:
res += w
print(res)
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 2061 [재시도 필요] (0) | 2022.04.14 |
---|---|
[BOJ] 2052 (0) | 2022.04.13 |
[BOJ] 2033 (0) | 2022.04.11 |
[BOJ] 2028 (0) | 2022.04.10 |
[BOJ] 2010 (0) | 2022.04.09 |