반응형
밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
주의해야 할 점
이 문제에서 사용한 map을 사용한 입력 방식은 정말 많이 사용하는 입력 방식입니다.
이해하고 거의 외운 것 마냥 써봅시다.
저는 문자열 슬라이싱과 split을 이용해서 풀었는데
입력한 문자열에서 원하는 문자열을 빼내는 것은 정말 중요한 기법입니다.
이 문제에서 애를 많이 먹었다면 열심히 공부해놓읍시다.
생각한 풀이 과정
- readline을 사용하기 위해 import 합니다.
- 화학식을 CxHy 꼴로 입력합니다. 입력한 CxHy 문자열에서 x, y 값이 필요한데 맨 앞의 C는 필요 없으므로 문자열 슬라이싱으로 인덱스 1부터 끝까지로 잘라줍니다. 그러면 CxHy에서 xHy 부분이 나오게 됩니다.
- 과정 2의 결과인 xHy에서 H를 기준으로 잘라주어 x, y의 값을 분리합니다. 각각 정수형으로 변환하고 변수 x, y에 저장합니다.
- 탄소 C의 원자량은 12, 수소 H의 원자량은 1이므로 12 * x + y로 분자량을 계산하고 변수 molecular_weight에 저장합니다.
- 분자량인 molecular_weight의 값을 출력합니다.
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 화학식을 CxHy꼴로 입력합니다.
# 우리에게 필요한 값은 x, y이므로 입력한 CxHy에서 맨 앞 C는 제외하고,
# xHy에서 H를 기준으로 분리해 x, y값을 만들어줍니다.
# 각각 정수형으로 변환합니다.
x, y = map(int, stdin.readline()[1:].split('H'))
# C의 원자량은 12, H의 원자량은 1이므로, 그에 맞게 CxHy의 분자량을 계산하고 변수에 저장합니다.
molecular_weight = 12 * x + y
# CxHy의 분자량인 molecular_weight의 값을 출력합니다.
print(molecular_weight)
제출 결과
느낀 점
첫 번째로 제출한 코드에서는 입력을 할 때 예시처럼 숫자가 한 자리 숫자일 때만 결과가 제대로 나오게 짜버렸습니다.
하지만, 입력에서 x, y는 1에서 100까지 숫자라 한 자리 숫자뿐만 아니라 두, 세 자리 숫자인 경우도 있으므로
당연히 잘못된 풀이 결과를 보게 되었습니다.
그나저나 분자량은 아주 예전에 화학 공부할 때 봤던 단어인데
기억이 하나도 안 나네요.😁😁
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
반응형
댓글