고급협동조합의 OSM

 

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

 

2557번: Hello World

Hello World!를 출력하시오.

www.acmicpc.net

문제

Hello World!를 출력하시오.

 

입력

없음

 

출력

Hello World!를 출력하시오.


풀이

"Hello World!"를 구성하는 문자(공백, 느낌표 포함)를 유니코드로 변환한 후, 해당하는 수를 만들어 한 글자씩 출력하는 방법을 이용하면 됩니다. 예를 들어 대문자 H는 유니코드 72번이므로 72를 계산해서 어찌저찌 만들어 출력하고, 그 다음 소문자 o는 유니코드 101번이므로 101을 또 만들고, ... 이 과정을 반복하면 Hello World!를 출력할 수 있습니다.

 

코드

어떻게
엄.. .....

동탄어?준.. .. ...
어엄어어.......
어어엄어어어..........
어어어엄어어어어...
어어어어엄어어어어어.

엄어,
준.. ..

어엄어어..
식어어ㅋ

어어엄어어어.
식어어어ㅋ

어어엄어어어.......
식어어어ㅋ
식어어어ㅋ

어어엄어어어...
식어어어ㅋ

어어어엄어어어어..
식어어어어ㅋ

어엄어어...............
식어어ㅋ
식어어어ㅋ

어어엄어어어...
식어어어ㅋ

어어엄어어어,,,,,,
식어어어ㅋ

어어엄어어어,,,,,,,,
식어어어ㅋ

어어어엄어어어어.
식어어어어ㅋ
화이팅!.,
이 사람이름이냐ㅋㅋ

01│어떻게

02│.. .....

03│

→ 1번 변수에 2×5=10을 저장합니다(뒤에 나올 '×10 반복문'에 사용할 변수).

 

(×10 반복문 시작)

04│동탄?.. .. ...

05│어어.......

06│어어어어어..........

07│어어어어어어어...
08│어어어어어어어어어.
09│

10│,
11│.. ..

(×10 반복문 끝)

5~8번째 줄: 각각 2, 3, 4, 5번 변수에 들어 있는 값에서 7, 10, 3, 1을 추가로 더해 저장합니다.
10~11번째 줄: 1번 변수의 값을 1만큼 줄이고 4번째 줄로 넘어갑니다. 이는 곧 앞으로 남은 덧셈의 횟수를 1만큼 줄이는 것과 같습니다.

4번째 줄: 덧셈을 10번 완료했다면 12번째 줄로 넘어갑니다. 반복문이 끝나면 2, 3, 4, 5번 변수에는 각각 70, 100, 30, 10이 저장됩니다.

 

12│
13│어어..
14│어어

2번 변수의 값을 70+2=72로 만들고, (10진수로) 유니코드 72번에 해당하는 문자 H를 출력합니다.

 

15│

16│어어어어어.
17│어어어

3번 변수의 값을 100+1=101로 만들고, 유니코드 101번에 해당하는 문자 e를 출력합니다.

 

18│
19│어어어어어.......

20│어어어

21│어어어

 3번 변수의 값을 101+7=108로 만들고, 유니코드 108번에 해당하는 문자 l(소문자 엘)을 두 번 출력합니다.


22│

23│어어어어어...
24│어어어

 3번 변수의 값을 108+3=111으로 만들고, 유니코드 111번에 해당하는 문자 o를 출력합니다.

 

25│
26│어어어어어어어..
27│어어어어

4번 변수의 값을 30+2=32로 만들고, 유니코드 32번에 해당하는 문자 SP(공백 문자)를 출력합니다.

 

28│
29│어어...............
30│어어

31│어어어

 2번 변수의 값을 72+15=87로 만들고, 유니코드 87번에 해당하는 문자 W를 출력합니다. 이후 문자 o를 출력합니다.

 

32│
33│어어어어어...
34│어어어

 3번 변수의 값을 111+3=114로 만들고, 유니코드 114번에 해당하는 문자 r을 출력합니다.

 

35│
36│어어어어어,,,,,,
37│어어어

 3번 변수의 값을 114-6=108로 만들고, 유니코드 108번에 해당하는 문자 l(소문자 엘)을 출력합니다.

※ 참고: 36번째 줄에서 -6을 표현할 때 ',, ...'와 같이 표현할 수 없는 이유는 무엇일까요? 만약 36번째 줄을 '어어어어어,, ...'로 작성했다면 구현체는 이를 (3번 변수의 값)-2×3으로 해석합니다. 그런데 이를 앞에서부터 차례대로 계산해 112×3=336을 출력하는 구현체도 있고(ummc(c 컴파일러), 파이썬 인터프리터, 엄랭 deno 등), 연산자 우선순위에 따라 계산해 114-6=108을 출력하는 구현체도 있습니다(vba 인터프리터 등). 이러한 모호함을 피하기 위해 연산은 단순하게 적는 것이 좋습니다.

 

38│

39│어어어어어,,,,,,,,
40│어어어

 3번 변수의 값을 108-8=100으로 만들고, 유니코드 100번에 해당하는 문자 d를 출력합니다.

 

41│
42│어어어어어어어.
43│어어어어

44│화이팅!.,

45│이 사람이름이냐ㅋㅋ

4번 변수의 값을 32+1=33으로 만들고, 유니코드 33번에 해당하는 문자 !를 출력합니다. 이후 return 0;을 실행합니다.

 

Hello World!는 프로그래밍의 입문을 상징하는 단어이지만, 엄랭에서는 Hello World!도 출력하기 힘드네요. 하지만 여기까지 따라오신 여러분은 이제 엄준식을 정복하는 데 한 발짝 더 다가섰습니다. 엄랭을 배우는 여러분 모두 파이팅입니다!

profile

고급협동조합의 OSM

@고급협동조합

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!