본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1124번 : 분자량 구하기 1

by 빛밤하늘 2021. 8. 16.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

분자량 구하기 1

화학식이 $C_xH_y$ 꼴로 입력된다. ($1 <= x, y <= 100$) $x, y = 1$인 경우에도 $1$을 표시한다. 예) $C_1H_1$

codeup.kr

 

 

 

 

 

 

 

 

주의해야 할 점

이 문제에서 사용한 map을 사용한 입력 방식은 정말 많이 사용하는 입력 방식입니다.

이해하고 거의 외운 것 마냥 써봅시다.

 

저는 문자열 슬라이싱과 split을 이용해서 풀었는데

입력한 문자열에서 원하는 문자열을 빼내는 것은 정말 중요한 기법입니다.

이 문제에서 애를 많이 먹었다면 열심히 공부해놓읍시다.

 

 

 

생각한 풀이 과정

  1. readline을 사용하기 위해 import 합니다.
  2. 화학식을 CxHy 꼴로 입력합니다. 입력한 CxHy 문자열에서 x, y 값이 필요한데 맨 앞의 C는 필요 없으므로 문자열 슬라이싱으로 인덱스 1부터 끝까지로 잘라줍니다. 그러면 CxHy에서 xHy 부분이 나오게 됩니다.
  3. 과정 2의 결과인 xHy에서 H를 기준으로 잘라주어 x, y의 값을 분리합니다. 각각 정수형으로 변환하고 변수 x, y에 저장합니다.
  4. 탄소 C의 원자량은 12, 수소 H의 원자량은 1이므로 12 * x + y로 분자량을 계산하고 변수 molecular_weight에 저장합니다.
  5. 분자량인 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까지 숫자라 한 자리 숫자뿐만 아니라 두, 세 자리 숫자인 경우도 있으므로

당연히 잘못된 풀이 결과를 보게 되었습니다.

 

그나저나 분자량은 아주 예전에 화학 공부할 때 봤던 단어인데

기억이 하나도 안 나네요.😁😁

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글