티스토리 뷰
문제 사이트
9375번: 패션왕 신해빈
첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.
www.acmicpc.net
알고리즘
1. 테스트 케이스 입력받고, 반복문 수행
2. n 입력받기
3. n이 0일 경우, 0 출력 후 continue
이 코드 없으면 런타임에러나요!
4. n만큼 반복하며 Dictionary 입력받기 ( 키가 있는경우, 없는 경우 구분해서 받아야해요)
5. value + 1을 구하여 result_arr에 삽입
첫번째 키에 (A, B)라는 옷이 있을 때, A를 입을수도, B를 입을 수도, 둘 다 안입을 수도 있습니다.
둘 다 안 입을 경우도 고려하기 위해 +1 을 해줍니다.
6. result_arr에 존재하는 원소 곱한 후 -1
집합 A, B, C가 있을 때 {안입기, 안입기, 안입기} 라는 부분집합의 경우의 수 (1가지)를 빼주는 것입니다.
나의 코드
for _ in 0..<Int(readLine()!)!{ // testcase만큼 반복
var result_arr: [Int] = [] // 각 value + 1을 넣을 배열
var dic = [String: [String]]()
let n = Int(readLine()!)!
if n == 0{ // 이 코드 없으면 runtimeError 발생
print(0)
continue
}
for _ in 0..<n{ // n만큼 반복
let value: [String] = readLine()!.split(separator: " ").map{ String($0) }
if dic.keys.contains(value[1]){ // 이미 존재한다면
dic[value[1]]!.append(value[0]) // append
} else { // 없다면
dic[value[1]] = [value[0]] // key 생성
}
}
for (_, value) in dic{
result_arr.append(value.count + 1) // value의 길이 + 1을 삽입
}
print(mul(numbers: result_arr) - 1) // 각 값의 곱을 구한 후 -1 하여 출력
}
func mul(numbers: [Int]) -> Int{
numbers.reduce(1, *)
}
Key Point
📍 Dictionary 선언하기!
Dictionary를 [String: String] 으로 선언하면, value가 나누어지지 않습니다.
key = "value1value2value3" 이런식으로 나타남 -> [String:[String]] 으로 선언
📍Dictionary 입력하기!
Dictionary에 key가 존재하는지 확인하여 각각 다른 연산을 수행해야한다.
그렇지 않으면, 항상 값을 덮어쓰게 된다.
📍 reduce 이용하여 배열의 곱 구하기
'Algorithm > Baekjoon' 카테고리의 다른 글
[Swift] 백준 2579: 계단 오르기 (0) | 2022.04.20 |
---|---|
[Swift] 백준 11724: 연결 요소의 개수 (0) | 2022.04.20 |
[Swift] 백준 1764: 듣보잡 (0) | 2022.04.15 |
[Swift] 백준 17219: 비밀번호 찾기 (0) | 2022.04.05 |
[Swift] 백준 1012 유기농 배추 코드 및 해설 (0) | 2022.04.03 |
- Total
- Today
- Yesterday
- CHR
- 반복문
- replit
- 리플릿
- SwiftUI
- baekjoon
- 백준
- COMMIT
- level1
- 부르트포스
- CodeUp
- 프로그래머스
- python
- Code up
- 기초 100제
- 코드업
- 정답
- 깃허브
- 코드 업
- Swift
- 설명
- 깃
- do while
- 파이썬
- 레플릿
- for문
- 16진수 입력
- 이것이 코딩테스트다
- ord
- 시간초과
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |