티스토리 뷰



로마숫자를 입력하면 아라비안숫자로 변환하여 뱉아내는 코드를 만드세요


이 문제는 초보 무지렁이에게는 너무 머리아픈 문제였음 ㅜㅜ


앞 글에도 썼지만

내가 아는 로마숫자는 뻐꾸기시계에 적혀있던 I, V, X이 전부였지만

이 세 가지 숫자를 가지고 만들 수 있는 조합들 외에도

L(50), C(100), D(500), M(1000) 이 있었어요..


M 이상의 단위는 아마도 없는 듯....?? (아마도??)

그래서 저도 일단 M까지 넣었어요.


특정 알파벳을 만나면 숫자로 변환하는 것까진 오 쉽다 하면서 했는데,

그 뒤가 어려웠음....


앞에서부터 차근차근 알파벳 하나씩 숫자로 변환해서 더하는데,

문제는 2019 같은 숫자....


MMXIX를 글자 그대로 다 더하게 되면


M = 1000 이니까 더해

M = 1000 이니까 또 더해

X = 10 이니까 더 해

I = 1 이니까 더해

X = 10 이니까 더해

2021이 됨 ㅋㅋㅋㅋ


MMXIX 와 MMXXI 의 결과물이 같아지는.... ㅋㅋㅋㅋ

IV와 VI도 같은 값이 나오는 코드가 돼버린 거죠 흑흑


XIX 를 10 + 1 + 10 이라고 알아듣지 않고

10 + (10 - 1) 이라고 코드를 짜야했음.


그리고 낑낑 거려서 결국 코드를 다 만들었어요.


다 만들고 나서 한숨 돌리며 가만히 생각해보니 ㅋㅋㅋㅋㅋㅋㅋㅋ

꼭 10 + (10 - 1) 일 필요가 없는 거 아니겠음?? ㅋㅋㅋㅋ 

10 - 1 + 10 이어도 어차피 같은 값 아님?? ㅠㅠㅠㅠ 이런 ㅅㅂ?? ㅠㅠㅠㅠ


그냥 1을 그 자리에서 바로 빼버리도록 만들었으면 코드 만들기도 더 쉬웠을텐데

머리가 나빠서 내 손발이 개고생을 하면서

굳이 다음 숫자를 먼저 더할 때까지 기다린 다음 거기서 앞의 1을 빼도록 코드를 짜버림..


이런 참사가 생긴 것은 바로 어릴 적 배운 주입식 교육 때문이죠.


로마숫자로 IV는 4야. 왜냐하면 V(5)에서 I(1)을 빼서 그런거야.

→ 아하 IV = (5 - 1) = 4

이렇게 IV를 하나의 숫자로 보는 선입견에 강하게 사로잡혀서

이걸 문자의 순서 IV 그대로 -1 과 +5 로 나누어서 따로 바라볼 생각을

저 그지같은 코드를 다 짤 때까지도 못 했음.. ㅠㅠ

다 끝내고난 직후에 이런 생각이 떠오르는 이 개같은 타이밍은 무엇....



솔직히 처음부터 그냥 I가 V나 X나 그런 큰 숫자들 앞에 놓이면 +1 대신 -1로 계산되게끔 했으면

숫자 하나하나씩 차례대로 변환해서 넘어가도록 쉽게 코드를 짤 수 있는건데


굳~이 두 개 숫자를 같이 묶어서 보겠다고

I 뒤에 큰 숫자가 오면 I는 잠시 기다렸다가 바로 뒤에 온 큰숫자 - 1 이딴 코드를 짰으니 ㅋㅋ


이 방법대로면 I와 그 바로 다음 숫자를 둘이 함께 묶어서 계산한 다음에

I의 바로 다음 숫자가 아닌 그 다음 숫자로 넘어가도록 코드를 따로 짜야해요.

근데 또 I이 마지막 바로 한칸 앞이면, 두 칸을 넘어가면 아무 숫자도 없으니 거기서 끝내도록 예외사항을 넣어주어야함 크크-

덕분에 제 머리가 많이 아팠죠 ㅠㅠ


그래서 슬프지만 뭐 어쩌겠어요 ㅋㅋㅋㅋ

더 효율적인 코드로 바꿔야죠 ㅋㅋ

선생님한테 제출하는거라서, 최대한 짧고 간결한 코드를 짜야해요 ㅠㅠ


과제는 총 10문제인데,

선생님은 9번이 가장 어려운 난이도라고 하고 문제를 내셨는데,

어쩌다보니 저는 이 7번 문제가 마지막 남은 문제였어요 ㅋㅋ



선생님은 학생들이 제출한 코드에 랜덤하게 값을 여러 번 입력해본 다음

매번 결과값이 정확하게 나오는지를 확인한다고 하셨어요.


결과값이 정확함??

→ ㅇㅎ 그렇다면 이 코드가 최선인가?? 똑같이 정확하면서도 더 짧은 코드를 만들 수는 없는가??


이게 채점 기준이라고 합니다 ㅎㅎ


벌써 시간이 자정이 다 되어가다보니,,

오늘은 이만 자고 내일 다시 일어나서

오류가 없는지 여러 값을 넣어서 모든 문제를 다시 더 테스트를 해보고

좀 더 나은 코드로 바꿀 수 있을만한 게 있을지 또 찬찬히 살펴봐야겠어요.




결과물은 정말 별거없고 초라해요....

사진 사이즈가 왜 이리 제각각인거?? ㅎㅎ



+) 선생님이 넌 왜 항상 물음표를 두 개 쓰냐고 물어보셨어요 ㅋㅋㅋㅋ

저도 잘 모르겠....

고딩쯤(?) 때부터 생긴 습관인데, 저도 제가 왜 이러는지는 잘 모르겠어요 ㅋㅋㅋㅋ

눈치채신 분들도 계시겠지만,

ㅋㅋ 도 ㅎㅎ도 ..도 !! 도 모두 짝수로만 쓰거든요.

별거 아닌 OCD 예요. 짝수로 써야한다는??

좋아하는 숫자는 13과 169입니다만 ㅋㅋ TMI :D




댓글