Updated:


시작하며

스위프트의 print문으로 여러 줄을 출력하는 것은 매우 쉬운 일이다. 쉬운 일인 만큼 print문으로 고양이를 그려보자….고양이를 그리라고?


백준 10171번

백준 10171번

백준 10171번 출력

아 ㅋㅋ 고양이를 이렇게 그리라고? 난또 ㅋㅋㅋ. 다들 잠시 당황했던건 잊고 빠르게 출력해서 문제를 넘어가도록 하자.


print("\    /\")
#=> error : Invalid escape sequence in literal
#=> error : Unterminated string literal
print(" )  ( ')")
print("(  /  )")
print(" \(__)|")

에러때문에 빌드가 되지 않는다. 무슨 이유일까?
이유는 스위프트에서 문자열에서 문자기호를 사용하기 위해 하는것을 Escape sequence라고 하는데 Escape sequence를 하고자 할때 사용하는 것이 특수문자 앞에 역슬래시(\)를 붙여주는 것이다. 따라서 역슬래시와 큰따옴표를 붙여 사용한 첫번째 print문에 마지막 큰따옴표가 인식되지 못해 문장이 정상적으로 마무리 되지 않았기 때문이다. 그렇다면 Escape sequence를 올바르게 사용하는 방법을 배워보도록 하자.


// 만약 쌍따옴표를 출력하고 싶다면 어떻게 해야 할까?
// Ex : "swift" 를 출력해보자.
print(""swift"")
#=> error 발생

print("\"swift\"")
#=> prints "swift"

다음과 같이 문자열을 출력하기 위한 특수문자 쌍따옴표(“)를 사용하기 위해선 Escape sequence를 사용해서 표현해 주어야 한다. 이번 문제를 풀기 위한 역슬래시 또는 문자열 내에 변수를 출력할때도 사용 가능하다.


// Ex : 역슬래시 = \ 를 출력해보자.
print("역슬래시 = \\")
#=> prints 역슬래시 = \

// 문자열에 변수를 넣어보자.
let name = "재웅"

print("내 이름 : \(name)")
#=> prints 내 이름 : 재웅

이처럼 문자열 내에 특수문자와 변수를 넣을 수 있다.

자, 그러면 특수문자를 문자열에 포함시키는 방법을 알았으니 문제를 바로 풀어보도록 하자.


print("\\    /\\")
print(" )  ( ')")
print("(  /  )")
print(" \\(__)|")

#=> prints \    /\
#=>         )  ( ')
#=>        (  /  )
#=>         \(__)|

정답!! 이번 문제도 Escape sequence만 배우면 정말 쉽게 풀 수 있는 문제였다.



마무리

이번 문제는 고양이를 그리라 했다면 다음 문제는 개를 그리는 문제다. 의도적으로 긴 문자열을 출력하기 위해선 더 유용한 방법이 있다. 다음 포스팅에선 Escape sequence를 사용하지 않고 더 편리한 방법을 알아보도록 하자!