Swift로 코딩테스트 준비하기 (2) - 문자열 처리

2022. 12. 16. 01:31·iOS
목차
  1. 1. 문자열 입력받기 
  2. 2. 문자열의 원소를 하나씩 출력하기
728x90

코딩테스트의 구현문제를 위해 빠질 수 없는 문자열처리에 대한 Swift 문법을 정리해보자 

1. 문자열 입력받기 

Swift에서 readLine() 함수를 사용해서 한줄 읽어들일 수 있는데, 이때 nil 값이 들어올 수 도 있으므로 Swift는 readLine 함수가 Optional 타입의 String을 반환하게 설계한듯하다 
어처피 백준에서 옵셔널 처리할 일은 없으므로 강제옵셔널 (!) 처리를 해준다. 

var input = readLine()! // 문자열 하나 입력받기

 

2. 문자열의 원소를 하나씩 출력하기


!! Swift는 input[1] 이런식으로 바로 Int 값으로 인덱스 접근이 허용되지 않는다 !!
index() 메소드를 이용해서 인덱스를 가져온 후 가져온 인덱스로 문자열에 접근해야 한다 

for i in 0..<input.count {
    var idx = input.index(input.startIndex, offsetBy: i)
    // swift는 input[1] 이렇게 바로 문자열 인덱스로 Int를 받지 않는다
    print(type(of: idx))
    print(input[idx])
}

출력해본 결과 놀랍게도 Index라는 type이 swift에 있다...! 

파이썬을 써본 사람의 입장으로 위의 저 코드가 마음에 안들어서 찾아보니까 다음과 같은 indices() 를 통해 인덱스로 바로 접근이 가능했다. 물론 index.indices를 통해 얻어지는 저 i 의 값 또한 index 타입이다. 

for i in input.indices {
    print(input[i])
}

 

Apple 공식문서에 따르면 indices 는 collection 타입에 유효하고, 오름차순으로 기본 설정이 되어있다!! 

swift에서의 collection 타입이란, 공식문서에 따르면 Array, Set, Dictionary 세가지를 말한다 

728x90

'iOS' 카테고리의 다른 글

Swift for 문에서 증감 구간 설정하기  (0) 2022.12.17
[Swift] 십진수를 이진수로 바꾸기 + 이진수를 십진수로 바꾸기  (0) 2022.12.16
Swift로 코딩테스트 준비하기 (1) - 백준 문제 입력받기, 2차원 배열 입력/출력  (0) 2022.12.13
The file "xxx.xcuserdatad" could not be unlocked. Could not add write permission to the file because you do not own it. Try modifying the permission of the file in the Finder or Terminal. 해결!  (0) 2022.02.04
[iOS] Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates. 에러  (0) 2022.01.29
  1. 1. 문자열 입력받기 
  2. 2. 문자열의 원소를 하나씩 출력하기
'iOS' 카테고리의 다른 글
  • Swift for 문에서 증감 구간 설정하기
  • [Swift] 십진수를 이진수로 바꾸기 + 이진수를 십진수로 바꾸기
  • Swift로 코딩테스트 준비하기 (1) - 백준 문제 입력받기, 2차원 배열 입력/출력
  • The file "xxx.xcuserdatad" could not be unlocked. Could not add write permission to the file because you do not own it. Try modifying the permission of the file in the Finder or Terminal. 해결!
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • 운영체제
  • 코딩테스트
  • SPARK
  • Swift
  • ansible
  • 백트래킹
  • 쿠버네티스
  • 파이썬
  • BFS
  • 백준
  • 데이터엔지니어
  • 프로그래머스
  • 알고리즘
  • Databricks
  • 클라우드
  • 빅데이터
  • python
  • dp
  • Kubernetes
  • 리눅스
  • 데이터브릭스
  • Leetcode
  • 데이터엔지니어링
  • docker
  • EC2
  • linux
  • AWS
  • 카카오코딩테스트
  • dfs
  • 스파크

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
Swift로 코딩테스트 준비하기 (2) - 문자열 처리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.