티스토리 뷰
백준 10808번, 알파벳 개수 출력하기 문제 설명
안녕하세요~ 오늘도 swift 기초문제 하나를 풀어보도록 하겠습니다.
백준 10808번, 알파벳 개수는 입력받은 문자열의 a, b, c .... y, z 까지의 각 알파벳 개수를 출력하는 문제입니다.
입력으로 주어지는 문자열은 소문자로만 이루어져있습니다. 이 점을 토대로, 문자열의 문자 아스키코드 값은 97 ~ 122임을 이용해서 문제를 해결할 수 있습니다.
문제 문자열 알파벳 개수 출력하기 문제의 입출력예시입니다.
출력예시를 보시면 a ~ z까지의 각 알파벳 문자 갯수를 출력하고 있습니다. 저는 문자열을 입력받은 후, 문자열의 문자를 하나하나 배열에 카운팅 기록한 후, 배열의 카운팅 값을 출력하는 방식으로 문제를 풀 예정입니다.
바로 백준 10808번 알파벳 개수 출력하기 문제 swift 언어를 사용해서 풀어보도록 하겠습니다.
알파벳 개수 출력하기 swift 문제풀이
Character타입의 asciiValue와 카운팅 용 배열을 활용하기
먼저 Character 타입에 대한 extension 에 변수 하나를 정의하겠습니다.
3 ~ 5행) asciiIndex는 특정 문자의 소문자 알파벳에 대한 아스키값을 토대로 알파벳 고유 인덱스를 반환하는 프로퍼티입니다. 그 반환갑은 a -> 0, b -> 1, c -> 2 .... 와 같은 식으로 결과값을 반환하게 됩니다.
Character는 swift의 문자 타입입니다. String은 다수의 Character로 구성되어있습니다. Character의 asciiValue, unicodeScalars.first!.value 등으로 특정 문자의 ascii 값을 구할 수 있습니다.
8행) charDic은 소문자 알파벳 문자의 카운팅 목적으로 사용하는 배열입니다. a는 charDic[0], b는 charDic[1]과 대응되는 방식입니다. 그렇게 크기는 알파벳 갯수와 동일한 26가 되는 것이지요.
10 ~ 12행) 이제 입력받은 문자열을 forEach로 순회하면서 알파벳을 카운팅 해주고 있습니다.
이제 카운팅이 완료되었습니다. charDic은 [Int]타입의 배열이라 이대로 공백단위 출력하기는 어렵습니다. 이를 출력하기 쉽게 변환하는 작업을 거치겠습니다.
16행 )먼저 map 고차함수를 통해 [Int] -> [String] 타입의 배열로 맵핑을 해준 후, joined를 통해서 공백단위로 합쳐줍니다. 출력결과는 각각의 카운팅값을 공백단위로 출력해주어야 하기 때문이죠. 이렇게 작성한 코드의 실행 예시, 문제 제출결과는 아래와 같습니다.
'알고리즘 정보 > Swift 알고리즘' 카테고리의 다른 글
백준 그리디 Greedy 문제 11501 주식, swift 문제풀이 (0) | 2021.02.05 |
---|---|
백준 9421 소수상근수, 에라토스테네스의체 swift 풀이 (0) | 2021.02.04 |
swift String 처리, 백준 11721 문자열끊어출력하기 풀이 (0) | 2021.02.02 |
swift DFS 완전탐색, 백준 15683 감시 문제풀이 (2) | 2021.02.01 |
swift sorted/joined 고차함수활용, 백준 1181 단어정렬 풀이 (0) | 2021.01.31 |
- Total
- Today
- Yesterday
- 부스트코스
- swift문제
- Swift 알고리즘
- swift알고리즘
- swift
- swift 기초
- createML
- 자연어처리
- swift string
- 알고리즘문제
- 백준알고리즘
- 알고리즘
- 김프매매
- Protocol
- swift reduce
- 프로그래머스
- 컬렉션
- SwiftUI
- 프로토콜
- 스위프트
- swift언어
- 백준swift
- uikit
- ios
- publisher
- swift 문자열
- 개발자문서
- 프로그래머스swift
- Collection
- CoreML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |