Focus On Develop ๐ŸคŸ๐ŸคŸ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฐ€์žฅ ํฐ ์ˆ˜ ๋ณธ๋ฌธ

iOS [Swift]/์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฐ€์žฅ ํฐ ์ˆ˜

๋ˆ„๋ฆฌ๋‹ฌ์ดํ‹€ 2020. 12. 29. 13:45

<๋ฌธ์ œ>


<์ „๋žต์งœ๊ธฐ>

"numbers๋ฅผ ์ญ‰ ์ด์–ด๋ถ™์—ฌ์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด, ์ œ์ผ ์•ž์ž๋ฆฌ์— ์ œ์ผ ํฐ ์ˆ˜๊ฐ€ ๋“ค์–ด์˜ค๋ฉด๋œ๋‹ค" ๋ผ๋Š” ์ „์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์‹œ์ž‘ํ•œ๋‹ค. ์Œ.. ๊ทผ๋ฐ ์˜ˆ์‹œ์˜ 2๋ฒˆ์ผ€์ด์Šค๋ฅผ ๋ณด๋ฉด 3, 30, 34 ์ด๋ ‡๊ฒŒ ํฌํ•จ๋˜์–ด ์žˆ๋Š”๋ฐ ์•ž์ž๋ฆฌ๊ฐ€ ๋ชจ๋‘ 3์ด๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜์ง€? ์ด ๋ถ€๋ถ„์„ ๊ณ ๋ฏผํ•˜๋Š”๊ฒŒ ๊ฐ€์žฅ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. 3์ด 34๋ณด๋‹ค๋Š” ๋’ค์—, 30๋ณด๋‹ค๋Š” ์•ž์— ์žˆ์–ด์•ผ ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, (์ž๋ฆฟ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๊ทธ๋ƒฅ ์ •๋ ฌํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋น„๊ต๊ฐ€ ์–ด๋ ต๋‹ค.) ์‹ค์ œ๋กœ ๋‚ด๊ฐ€ ๋น„๊ตํ•  ํ–‰๋™์€ 3์˜ 3๊ณผ, 30์˜ 0์ค‘ ์–ด๋–ค๊ฒŒ ๋” ํฐ๊ฐ€์š”? ๋ผ๊ณ  ์‹œ์ž‘ ๋  ๊ฒƒ ๊ฐ™๋‹ค. ๊ทผ๋ฐ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๊ธธ๊ณ  ๋น„๊ตํ•ด์•ผ ํ• ๊ฒŒ ๋งŽ๋‹ค๋ฉด..??? ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋Š”, ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋ฅผ String์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋น„๊ต๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ.. ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ์›์†Œ๊ฐ€ ์ตœ๋Œ€ 1000 ์ดํ•˜๋กœ ์ฃผ์–ด์ง€๋‹ˆ, ๋งŒ์•ฝ 1์ž๋ฆฌ์ˆ˜๋กœ ์ฃผ์–ด์ง€๋”๋ผ๋„ ์ตœ๋Œ€ 4ํšŒ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด 4์ž๋ฆฌ์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ณ , ์–ด๋–ค๊ฒŒ ๋” ์•ž์œผ๋กœ ์™€์•ผํ•˜๋Š”์ง€ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ 3333 (3์„ 4ํšŒ๋ฐ˜๋ณต) ๊ณผ, 30303030(30์„ 4ํšŒ๋ฐ˜๋ณต) ์„ ๋น„๊ตํ–ˆ์„๋•Œ String์œผ๋กœ ๋น„๊ตํ•˜๋ฉด 3333์ด ๋” ํฌ๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ ๋ชจ๋“  ์›์†Œ๋ฅผ 4ํšŒ์”ฉ ๋ฐ˜๋ณตํ•ด์ฃผ๊ณ  ์ •๋ ฌํ•œ ๋’ค์—, ๋‹ค์‹œ ์›๋ž˜ ์›์†Œ๋กœ ๋˜๋Œ๋ ค ๋†“๊ธฐ๋งŒ ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

<์ฝ”๋“œ>

import Foundation

func solution(_ numbers:[Int]) -> String {
    let fourTimes = numbers.map { String($0) }.map { $0+$0+$0+$0 }
    let sortedFourTimes = fourTimes.sorted(by: >)
    let oneTimes = sortedFourTimes.map { $0[...$0.index($0.startIndex, offsetBy: $0.count/4 - 1)] }
    
    return oneTimes.joined().hasPrefix("00") ? "0" : oneTimes.joined()
}

 

<Lesson Learned>

์Œ.. ์†”์งํžˆ string์„ 4ํšŒ ๋ฐ˜๋ณต์„ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ 4๋ฒˆ ๋”ํ•ด๋ฒ„๋ฆผ.. ^^ ๐Ÿ˜‚ ใ…‹ใ…‹ใ…‹ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ๋Š”๋ฐ ๊ฒฐ๊ตญ์€ ๋งˆ์ง€๋ง‰ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์‹คํŒจํ–ˆ๋‹ค. ์ด๋Ÿด๋•Œ๋Š” ๋ณดํ†ต ๊ฒฝ๊ณ„์ ์— ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋˜๋Š”๋ฐ.. ๋‹คํ–‰ํžˆ๋„ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋„์ถœํ•  ์ˆ˜ ์—†๋Š” ์˜ˆ์™ธ ์ผ€์ด์Šค๋ฅผ ๋ฐ”๋กœ ์ฐพ์•˜๋‹ค. ๋ฐ”๋กœ... [0,0,..] ์ด๋Ÿฐ์‹์œผ๋กœ 0๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์ด ๋“ค์–ด์˜ค๋ฉด, "00" ๋˜๋Š” "000" ๋“ฑ์˜ ๊ฐ’์ด ๋ฆฌํ„ด๋˜๋Š”๋ฐ, ์‹ค์ œ๋กœ๋Š” "0"์ด ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋งˆ์ง€๋ง‰์— "00"์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด "0"๋งŒ ๋ฆฌํ„ดํ•˜๋ผ๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด ์ค€ ๋’ค์— Pass! ๐Ÿ‘

์˜ค๋Š˜๋„ ์—ญ์‹œ ๋‹ค๋ฅธ์‚ฌ๋žŒ์˜ ํ’€์ด์— ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์„œ ๊ณต์œ ํ•œ๋‹ค! ๋‚˜๋Š” ๋ฐ”๋กœ๋Š” ๋ญ๊ฐ€ ๋” ํฐ์ง€ ๋น„๊ต๊ฐ€ ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ 4ํšŒ์”ฉ ๋ฐ˜๋ณตํ•ด์ฃผ๊ณ  string ๋น„๊ต๋ฅผ ํ•ด์ฃผ์—ˆ๋Š”๋ฐ.. ์•„๋ž˜ ์ฝ”๋“œ์—์„œ๋Š” ์ •๋ ฌํ• ๋•Œ ๋ฐ”๋กœ string์œผ๋กœ ํ•ฉ์ณ์„œ Int๋กœ ๋น„๊ตํ•œ ๊ฒฐ๊ณผ๋กœ ์ €์žฅํ–ˆ๋‹ค.. ใ…œใ…œ ์˜ˆ๋ฅผ ๋“ค์–ด์„œ 3, 30์ด ์žˆ์„๋•Œ "303"๊ณผ "330" ์ค‘ ์ˆซ์ž๋กœ ๋น„๊ตํ–ˆ์„๋•Œ ๋ญ๊ฐ€ ๋” ์ปค? ๋ผ๋Š” ์‹์œผ๋กœ..ใ…Žใ…Ž ์ด๊ฑฐ๋Š” sorted๋ฅผ ํ™•์žฅํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๋กœ, ๋‹ค์–‘ํ•˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€ ๊ฒƒ์„ ์žŠ์ง€๋ง์ž!

let sortedNumbers = numbers.sorted {
    Int("\($0)\($1)")! > Int("\($1)\($0)")!
}

 

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‚ฌ์šฉ๋œ map์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?? ๐Ÿ‘‰ 2020/12/15 - [iOS [Swift]/๊ธฐ์ดˆ๋ฅผ ํƒ„ํƒ„ํžˆ!] - [Swift] map, filter, reduce

 

 

์ถœ์ € : ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฐ€์žฅ ํฐ ์ˆ˜

Comments