๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ˆœ์œ„

by Fomagran ๐Ÿ’ป 2021. 5. 15.
728x90
๋ฐ˜์‘ํ˜•

 

Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆœ์œ„

5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2

programmers.co.kr


Solution

 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์œผ๋กœ ํ’€์–ด์•ผ ํ•˜๋Š” ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

1. ๋ชจ๋“  ์Šน๋ถ€๋ฅผ ์ €์žฅํ•  ์ด์ค‘ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.

 

1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์„ ์ˆ˜๋“ค์˜ ์Šน๋ถ€๋ฅผ ๋‹ด์„ ์ด์ค‘ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ n+1 ํฌ๊ธฐ๋กœ ๊ฐ’์„ 0์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด์„ n+1๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

n+1๊ฐœ์”ฉ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ด์œ ๋Š” 0๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

 

(win ๋ฐฐ์—ด์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”)

 

2. results๋ฅผ ์ˆœํšŒํ•˜์—ฌ ์Šน๋ถ€์— ๋Œ€ํ•œ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

 

results์•ˆ์— ์žˆ๋Š” ๊ฐ’ ์ค‘ 0๋ฒˆ์งธ๋Š” ์ด๊ธด ์‚ฌ๋žŒ 1๋ฒˆ์งธ๋Š” ์ง„ ์‚ฌ๋žŒ์ด๋ฏ€๋กœ 

 

์Šน๋ถ€๋ฅผ ๋‹ด๋Š” ๋ฐฐ์—ด [result[0]][result[1]] ์˜ ๊ฐ’์„ 1๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

 

0์€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ 1์€ ์ด๊ธด ์ƒํƒœ๋กœ ์ €์žฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

(results.forEach๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”!)

 

3. ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ์œผ๋กœ ์ค‘๊ฐ„์— ์žˆ๋Š” ๊ฐ’์„ ์ฒดํฌํ•ด์ค€๋‹ค.

 

i,j,k 3์ค‘ for๋ฌธ์„ ๋งŒ๋“ค์–ด i์™€ k์˜ ์ค‘๊ฐ„์— ์žˆ๋Š” j๊ฐ€ kํ•œํ…Œ ์ง€๋Š”์ง€ ์ด๊ธฐ๋Š” ์ฒดํฌํ•ด์ค๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ i๊ฐ€ j๋ฅผ ์ด๊ฒผ๊ณ  k๊ฐ€ i๋ฅผ ์ด๊ฒผ๋‹ค๋ฉด k๋Š” j๋ฅผ ์ด๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ณ ๋กœ ์Šน๋ถ€๋ฅผ ๋‹ด๋Š” ๋ฐฐ์—ด์˜ [k][j] ๋ฒˆ์งธ๋ฅผ 1๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

 

( checkMiddleByFloyd ํ•จ์ˆ˜๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!)

 

4. ์ˆœ์œ„๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์„ ์ˆ˜์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

1๋ถ€ํ„ฐ n๊นŒ์ง€ ์ˆœํšŒ๋ฅผ ํ•˜๋Š” ์ด์ค‘ for๋ฌธ์„ ๋งŒ๋“ค์–ด ๋ชจ๋“  ์„ ์ˆ˜์˜ ์Šน๋ถ€๋ฅผ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค.

 

i ์„ ์ˆ˜์™€ j์„ ์ˆ˜์˜ ์Šน๋ถ€๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„  ์Šน๋ถ€๋ฅผ ๋‹ด๋Š” ๋ฐฐ์—ด์—์„œ i๊ฐ€ j๋ฅผ ์ด๊ฒผ๊ฑฐ๋‚˜ j๊ฐ€ i๋ฅผ ์ด๊ฒผ๋‹ค๋ฉด ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ฆ‰ [i][j]๊ฐ€ 1์ด๊ฑฐ๋‚˜ [j][i]๊ฐ€ 1์ด๋ผ๋ฉด ์•Œ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ n์—์„œ ์ž์‹ ์˜ ๋บ€ ๊ฐ’ ์ฆ‰, n-1์ด๋ผ๋ฉด ๋ชจ๋“  ์„ ์ˆ˜์™€์˜ ์Šน๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ˆœ์œ„๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ชจ๋‘ ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด์„œ ์ด๋ ‡๊ฒŒ ๋ชจ๋“  ์„ ์ˆ˜์™€์˜ ์Šน๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์„ ์ˆ˜์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.

 

( canKnowRankCount ํ•จ์ˆ˜๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”! )


Source Code

 


1์ฐจ ํ’€์ด

 

์ฒ˜์Œ์—” ๋ˆ„๊ฐ€ ๋ˆ„๊ตด ์ด๊ฒผ๊ณ  ์กŒ๋Š”์ง€๋งŒ ๋‹ด๊ณ  

 

์ด๊ธด ์‚ฌ๋žŒ๊ณผ ์ง„ ์‚ฌ๋žŒ์„ ํ•ฉ์ณ์„œ ์ž์‹ ์„ ๋บ€ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋‹ด๊ฒจ์žˆ๋‹ค๋ฉด ์ˆœ์œ„๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒ ์ง€๋ผ๊ณ  ์—„์ฒญ ์‰ฌ์šด ๋ฌธ์ œ๋„ค ํ•˜๊ณ  ํ’€์—ˆ๋Š”๋ฐ...

 

๋ˆ„๊ฐ€ ๋ˆ„๊ตด ์ด๊ธฐ๊ณ  ์งˆ๋•Œ๋งˆ๋‹ค ๊ฐ’์ด ๋ฐ”๋€Œ๋Š”๋ฐ ์ด๋Ÿฌ๋ฉด ๋ชจ๋“  ๊ฐ’์ด ๋ฐ”๋€Œ์–ด์•ผ ํ–ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด์„œ ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ๋กœ ํ’€์–ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋จ...

import Foundation

func solution(_ n:Int, _ results:[[Int]]) -> Int {
    
    var win:[[Int]] = (0...n).map{[$0]}
    var lose:[[Int]] = (0...n).map{[$0]}
    var answer:Int = 0
    
    results.forEach{
        win[$0[0]].append($0[1])
        lose[$0[1]].append($0[0])
    }

    for i in 1..<win.count {
        let count = Set((win[i].map{win[$0]} + lose[i].map{lose[$0]}).flatMap{$0}).count
        if count == n {
           answer += 1
        }
    }
    
    return answer
}

Reference 

 

์ด ๋ถ„์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

[C++, Swift][ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ˆœ์œ„

๋ฌธ์ œ์„ค๋ช…์€ ๋”๋ณด๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š” ๋”๋ณด๊ธฐ ๋ฌธ์ œ ๋งํฌ : programmers.co.kr/learn/courses/30/lessons/49191 ๋ฌธ์ œ ์„ค๋ช… n๋ช…์˜ ๊ถŒํˆฌ์„ ์ˆ˜๊ฐ€ ๊ถŒํˆฌ ๋Œ€ํšŒ์— ์ฐธ์—ฌํ–ˆ๊ณ  ๊ฐ๊ฐ 1๋ฒˆ๋ถ€ํ„ฐ n๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ถŒํˆฌ ๊ฒฝ

9967han.tistory.com

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€