[Programmers] [Lv.1] [Swift] 직사각형 별찍기

doyeonjeong_·2022년 7월 13일
0

프로그래머스

목록 보기
1/35
post-thumbnail

Hits

문제

직사각형 별찍기

문제파악하기

n이 만약 5, m이 3으로 주어진다면 아래처럼 출력해야한다.

*****
*****
*****
  1. readLine()!으로 입력을 받는다.
  2. components(separatedBy: [" "]) 공백을 기준으로 입력된 값을 분할한다.
  3. map { Int($0)! }로 각 인자를 Int형으로 반환하여 담아준다.
  4. 결과적으로 n = [5, 3]이라는 배열이 만들어진다.
  5. 이제 5개의 *을 3줄에 걸쳐 찍어야 하는데 String형으로 반환을 해야한다.
  6. String(repeating:,count:)로 먼저 엔터를 몇번 할 지 설정해주고
  7. 그 안에 String(repeating:,count:)로 *을 몇개나 찍을지 설정할건지 설정해줘야 한다.
  8. n[0]을 n이라고 가정하고, n[1]을 m이라고 가정하여 안의 반복문에는 n[0], 바깥반복문을 n[1]씩 반복해주면 된다.

풀이

import Foundation
let n = readLine()!.components(separatedBy: [" "]).map { Int($0)! }
print(String(repeating: String(repeating: "*", count: n[0])+"\n",count: n[1]))

🤔 FEEDBACK

  • 배열이름을 array, n = array[0], m = array[1]
    이런식으로 설정했다면 가독성이 좀 더 좋았을 것 같다.
  • 중간에 split과 components의 차이가 궁금해서 검색해봤다.

간단히 3가지 차이점을 말해보자면
1. split은 Swift의 표준 라이브러리라서 그냥 쓸 수 있고,
components는 Foundation 프레임워크에 속해있어서 import해야 쓸 수 있다.
2. split은 [SubString]을 반환하지만 components는 [String]을 반환한다.
3. split은 separator 외에 옵션 인자값을 갖고있지만, components는 separatedBy 인자값 하나만을 가진다.

공식문서를 자주 찾아보는 습관을 들여야겠다!

Reference

swift 문자열 처리 메서드, split과 components 간단 비교

profile
블로그 이사중 🚚 byukbyak.tistory.com

0개의 댓글