-
[BOJ 17487, Python 3] 타자 연습알고리즘/BOJ 2021. 9. 1. 18:55반응형
https://www.acmicpc.net/problem/17487
풀이
l, r 변수를 잡아서 영어만 사용하는 경우는 모두 더해주고, shift와 space bar 사용횟수는 한 변수에 전부 저장해줍니다. 저는 이걸 etc라는 변수에 저장했습니다.
이렇게 했으면 이제 etc 변수를 적절히 나눠서 l과 r에 더해주면 됩니다. 여기서 경우의 수가 있는데요.
1) abs(l - r) >= etc일 경우
이런 경우에는 l이나 r중 작은 값에 etc을 전부 더해주면 됩니다.
2) abs(l - r) < etc인 경우
숫자가 남는 경우입니다.
먼저 l = r이 될 정도로 작은 값에 etc 값 일부를 더해주고, 남은 etc 값은 2로 나눠서 l과 r에 더해주면 됩니다. 만약 남은 etc가 홀수라면 나머지 1은 l이나 r 아무곳에나 더해주면 됩니다.
코드
1234567891011121314151617181920212223242526272829a = 'qwertyasdfgzxcvb'b = 'uiophjklnm's = [*input()]l, r, etc = 0, 0, 0for x in s:if x == ' ': etc += 1elif x.islower():if x in a: l += 1else: r += 1else:etc += 1if x.lower() in a: l += 1else: r += 1p = abs(l-r)if p >= etc:if l < r: l += etcelse: r += etcelse:etc -= abs(l - r)if l < r: l += abs(l - r)else: r += abs(l - r)if etc % 2:l += etc//2 + 1r += etc//2else:l += etc//2r += etc//2print(l, r)cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 17489, Python 3] 보물 찾기 (0) 2021.09.01 [BOJ 17488, Python 3] 수강 바구니 (0) 2021.09.01 [BOJ 20957, C++] 농부 비니 (0) 2021.08.31 [BOJ 20956, Python 3] 아이스크림 도둑 지호 (0) 2021.08.31 [BOJ 20955, Python 3] 민서의 응급 수술 (0) 2021.08.31