Skip to content

Latest commit

 

History

History
74 lines (56 loc) · 1.26 KB

1043. 거짓말.md

File metadata and controls

74 lines (56 loc) · 1.26 KB

Baekjoon

1043. 거짓말

문제링크

코드

class Solution {
    func Function() {

		var m: Int = 0
		var numberOfKnown: Int = 0
		var known: [Int] = []
		var parties: [[Int]] = []
		
		if let input = readLine() {
			if input != "" {
				m = Int(input.split(separator: " ")[1]) ?? 0
			}
		}
		
		if let input = readLine() {
			numberOfKnown = Int(input.split(separator: " ")[0])!
			if numberOfKnown > 0 {
				known = input.split(separator: " ").map( { Int($0)! } )
			}
		}
		
		let _ = known[known.startIndex...].popFirst()
		
		for _ in 0..<m {
			if let input = readLine() {
				var party = input.split(separator: " ").map( { Int($0)! } )
				let _ = party[party.startIndex...].popFirst()
				parties.append(party)
			}
		}
		
		var setKnown = Set(known)
		
		for _ in 0..<m {
			for party in parties {
				let setParty = Set(party)
				let interSet = setParty.intersection(setKnown)
				if !interSet.isEmpty {
					setKnown = setKnown.union(setParty)
				}
			}
		}
		
		var count: Int = 0
		
		for party in parties {
			let setParty = Set(party)
			let interSet = setParty.intersection(setKnown)
			if interSet.isEmpty {
				count += 1
			}
		}
		print(count)
    }
}

풀이 이유

참고한 내용