본문 바로가기

Swift/Deep dive!!

[Swift] 딕셔너리 [ Int:[Int]] , 2차원 배열에 입력값으로 배열을 입력받는 나만의 팁!!

2차원 배열에 값을 입력 받는 방법

 

https://www.acmicpc.net/problem/2468

 

2468번: 안전 영역

재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는

www.acmicpc.net

 

이 문제처럼

2차원 배열을 입력 받아야 할 경우

 

5 4
1 0 1 0 0
1 0 0 0 0
1 0 1 0 1
1 0 0 1 0

 

//우선 차원 배열을 생성한다!!
var island = Array(repeating: [Int](), count: height)

//그후 세로줄 탐색하면서 배열을 추가한다.
for i in 0..<WH[1]{
	island[i] = readLine()!.split(separator: " ").map{Int(String($0))!}
}

 

 

아니면 이런식으로

//우선 2차원 배열을 생성한다
var island = Array(repeating: Array(repeating: 0, count: width), count: height)

//그후 세로줄 탐색하면서 배열을 추가한다.
for i in 0..<hieght]{
   island[i] = readLine()!.map{Int(String($0))!}
}

딕셔너리 [Int : [Int] ] //키 : 배열형식 에 값을 할당하는 방법

그리고

 

https://www.acmicpc.net/problem/11724

 

11724번: 연결 요소의 개수

첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주

www.acmicpc.net

이 문제에서 

6 5
1 2
2 5
5 1
3 4
4 6

딕셔너리의 키값에 값을 배열로 할당하고 싶은 경우에는

 

우선 updateValue(_ , forkey: )를 통해 키값 한개 한개를 업데이트 해준다.

그 후 graph [특정키]?.append(값) 으로 할당한다!!

 

var graph = [Int:[Int]]()

for i in 특정키...특정키마지막{
    graph.updateValue([], forKey: i);
}