티스토리 뷰

PS

백준 2608. 로마 숫자

tose33 2022. 6. 18. 16:14

https://www.acmicpc.net/problem/2608

 

2608번: 로마 숫자

첫째 줄과 둘째 줄에 하나씩 로마 숫자로 표현된 수가 주어진다. 입력된 각 수는 2000 보다 작거나 같고, 두 수의 합은 4000보다 작다.

www.acmicpc.net

 

로마 숫자를 아라비아 숫자로

우선 로마 숫자는 문자열로 받는다.

예외가 되는 문자들 (IV = 4, IX = 9, XL = 40, XC = 90, CD = 400, CM = 900)이 로마 숫자 문자열에 있는지 먼저 확인하고 있다면 해당 값을 결과에 더하고, 문자열에서 해당 문자열은 빼주면 된다.

모든 예외가 되는 문자열들을 제외하고 난 후에는 단순히 남은 문자들을 해당하는 숫자만큼 결과값에 더해주면 아라비아 숫자로 변환이 끝난다.

 

아라비아 숫자를 로마 숫자로

이 부분이 체크해줘야할 조건들이 좀 더 많아서 더 까다롭다.

아라비아 숫자는 int형으로 받는다.

 

기본적으로 로마 숫자들중 (1,4,9,10 ... 1000) 현재 아라비아 숫자 보다 작고 가장 근접한 값을 찾아서, 아라비아 숫자에서는 해당 값만큼 빼주고, 로마 숫자에 추가 해주면 된다. 

 

하지만 여러가지 조건들이 있다.

1. V,L,D 는 1회만 사용 가능
2. I,X,C,M은 연속해서 세번 까지만 가능
3. IV(10), IX(9), XL(7), XC(5), CD(3), CM(1) 은 한번씩만 사용 가능

 

따라서 현재 아라비아 숫자 보다 작고 가장 근접하면서 위의 3가지 조건을 모두 통과한 로마 숫자만 문자열에 추가해주면 된다.

 

 

'PS' 카테고리의 다른 글

백준 16434. 드래곤 앤 던전  (0) 2022.06.21
백준 1756. 피자 굽기  (0) 2022.06.18
백준 15662. 톱니바퀴 (2)  (0) 2022.06.17
백준 16985. Maaaaaaaaaze  (0) 2022.06.14
백준 18808. 스티커 붙이기  (0) 2022.06.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함