티스토리 뷰

반응형

 

 

 

 


백준 11721 문자열 열 개씩 끊어 출력하기 문제설명

오늘도 swift언어로 쉬운 문제 하나 풀어보도록 하겠습니다. 말그대로 입력받은 문자열을 10자리씩 끊어서 개행단위로 출력해주면 되는 문제입니다.

 

 

 

 

길이가 100자리를 넘지 않는 문자열 한줄을 입력받고, 입력 받은 문자열을 10자리 씩 잘라서 출력해주면 됩니다. 마지막으로 자른 문자열은 10자리가 안되면 그대로 출력해주면 됩니다. 

 

바로 swift언어로 문자열 열 개씩 끊어 출력하기 풀어보겠습니다. 

 

 

 


문자열 열 개씩 끊어 출력하기, swift String 활용 문제풀이

2행) length는 문자를 카운팅하는 변수입니다. length를 카운팅 하고 10이 될때마다 출력할 10자리의 문자열을 차곡차곡 쌓을 겁니다. 

3행) tmpString은 문자를 하나하나 카운팅하면서 10자리가 되기 전까지 누적할 임시 문자열 변수입니다. 

4행) sList는 출력할 10자리 문자열이 하나하나 들어가는 [String]타입 배열입닌다. 

5행) 이제 10자리씩 끊어 출력할 문자열을 입력받고 input에 저장합니다.

 

 

 

 

문자열 끊어 출력하기 주요 구현 swift 코드 부

6 ~ 8행) swift의 String타입은 BidirectionalCollection으로, 위와 같이 for문을 통해 값을 순차적으로 순회할 수 있습니다.

String타입 또한 컬렉션타입이므로 tmpString변수도 append 메서드를 통해 문자를 하나하나 뒤에 붙일 수 있습니다.

 

9 ~ 13행) 10자리가 되기전까지 탐색중인 char를 tmpString에 쌓고, length가 10이 되면 지금까지 쌓은 10자리 문자열을 sList에 저장, tmpString과 length를 초기화시켜줍니다.

 

이렇게 input 문자열의 모든 문자를 순회하면서 끊어 출력할 문자열을 sList에 저장해줍니다. 

length 변수 대신,  tmpString.count를 통해 문자열 길이를 확인할 수도 있겠지만, String타입의 count 시간 복잡도는 O(N)임을 유의하고 사용하시기 바랍니다. 위와 같은 단순 문제야 괜찮겠지만, 보다 복잡한 문제에서는 매우 큰 성능 차이를 볼 수 있습니다.

 

 

 

 

16 ~ 18행) 마지막 문자열은 10자리가 아닐 경우, 위의 for문 로직에서 마지막 문자열이 sList에 저장되지 않을 수 있습니다. 그래서 tmpString에 값이 남아있다면 sList에 추가시켜줍니다. 이렇게 10자리 씩 끊어 출력 할 문자열 리스트, sList가 완성되었습니다. 이제 남은 것은 문자열 리스트의 값을 개행단위로 출력해주는 것입니다.

String타입의 isEmpty 시간복잡도는 일반 RandomAccessCollection타입 배열의 isEmpty와 동일한 상수시간복잡도, O(1)입니다.

 

 

 

joined()는 문자열을 합쳐주는 유용한 함수입니다. separator: 레이블을 활용해서 합칠때 문자열 간 구분자를 지정할 수 있습니다. 위와 같이 separator: 인자에 "\n"를 설정해준 뒤에 print 함수를 호출하면 개행단위로 sList의 문자열 값을 출력할 수 있게 됩니다.

 

지금까지 작성한 코드의 제출결과는 아래와 같습니다.

 

 

 


백준 11721 문자열 끊어출력하기 문제풀이 제출 결과

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/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
글 보관함