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

2018 KAKAO BLIND RECRUITMENT [3์ฐจ] ์••์ถ• Swift

by Fomagran ๐Ÿ’ป 2020. 11. 16.
728x90
๋ฐ˜์‘ํ˜•
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [3์ฐจ] ์••์ถ•

TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]

programmers.co.kr

Solution


 

1. ๋Œ€๋ฌธ์ž ์•ŒํŒŒ๋ฒณ์ด ๋‹ด๊ธด ๋ฐฐ์—ด -> var words = (64...90).map({"\(UnicodeScalar($0)!)"})

์•„์Šคํ‚ค์ฝ”๋“œ 65๋ฒˆ๋ถ€ํ„ฐ 90๋ฒˆ๊นŒ์ง€๊ฐ€ A๋ถ€ํ„ฐ Z๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ์—์„œ๋Š” A์˜ ์ธ๋ฑ์Šค๋ฅผ 1๋กœ ํ–ˆ์œผ๋ฏ€๋กœ 64๋ฒˆ์งธ๋ถ€ํ„ฐ๋กœ ์„ค์ •ํ•จ.

 

2. words ์•ˆ์˜ ๋ฐฐ์—ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž๊ธธ์ด์—์„œ 1์„ ๋บ€ ์ˆ˜- > var maxCount = 0

 

3. msg๋ฅผ map์œผ๋กœ ๋‚˜๋ˆ ์ค€ ๋ณ€์ˆ˜ -> let map = msg.map{String($0)}

 

4. ํ˜„์žฌ ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค ๋ณ€์ˆ˜ - >  var x = 0

 

5. ์ถœ๋ ฅ๋  ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด - > var answer = [Int]()

 

while๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž ์ „์ฒด๋ฅผ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค. -> while x <= map.count-1 {

 

for in stride ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ words์˜ ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž๊ธธ์ด -1 ๋ถ€ํ„ฐ 0๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์คŒ -> for j in stride(from: maxCount, to: -1, by: -1) {

 

๋งŒ์•ฝ x + j ๊ฐ€ ์ „์ฒด ๋ฌธ์ž๋ณด๋‹ค ๊ธธ๋ฉด continue๋กœ j์˜ ๊ธธ์ด๋ฅผ ์ค„์—ฌ์ค€๋‹ค. ->  if  x+> map.count-1 continue }

 

๊ทธ๋ฆฌ๊ณ  x๋ถ€ํ„ฐ x+j๊นŒ์ง€์˜ ๋ฌธ์ž๊ฐ€ words์•ˆ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด -> if words.contains(map[x...x+j].joined()) {

 

words์—์„œ x๋ถ€ํ„ฐ j๊นŒ์ง€์˜ ๋ฌธ์ž ์ธ๋ฑ์Šค๋ฅผ ์•Œ์•„๋‚ด์–ด answer์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. -> answer.append(words.firstIndex(of: map[x...x+j].joined())!)

 

x๋ถ€ํ„ฐ j๊นŒ์ง€ ๋ฌธ์ž ๋‹ค์Œ์ด ์ „์ฒด ๋ฌธ์ž๋ณด๋‹ค ๊ธธ์ง€ ์•Š๋‹ค๋ฉด -> if x+j+1 <= map.count-1 {

 

x๋ถ€ํ„ฐ j+1 ๋ฌธ์ž๋ฅผ words์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. -> words.append(map[x...x+j+1].joined())

 

์ถ”๊ฐ€๋œ ๋ฌธ์ž์˜ ๊ธธ์ด์™€ ํ˜„์žฌ ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž์˜ ๊ธธ์ด๋ฅผ ๋น„๊ตํ•ด์„œ ๋” ๊ธด ๊ธธ์ด๋ฅผ maxCount๋กœ ์„ค์ • - > maxCount = max(maxCount, j+1)

 

x์˜ ์ธ๋ฑ์Šค๋ฅผ x+j+1๋กœ ๋ฐ”๊ฟ”์คŒ - >  x = x+j+1

 

x์˜ ์ธ๋ฑ์Šค๊ฐ€ ์ „์ฒด ๋ฌธ์ž๋ณด๋‹ค ์ปค์ ธ while๋ฌธ์„ ํƒˆ์ถœํ–ˆ์„ ๋•Œ answer์— ์ €์žฅ๋œ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•ด์คŒ - > return answer

 

Source Code


 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€