์ํฌ์๋ ์ํ์ ํฌ๊ธฐํ ์ฌ๋์ ์ค๋ง์ ๋๋ค. ์ํฌ์ ์ผ์ธ๋ฐฉ์ ๋ชจ์๊ณ ์ฌ์ ์ํ ๋ฌธ์ ๋ฅผ ์ ๋ถ ์ฐ์ผ๋ ค ํฉ๋๋ค. ์ํฌ์๋ 1๋ฒ ๋ฌธ์ ๋ถํฐ ๋ง์ง๋ง ๋ฌธ์ ๊น์ง ๋ค์๊ณผ ๊ฐ์ด ์ฐ์ต๋๋ค.
1๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
1๋ฒ ๋ฌธ์ ๋ถํฐ ๋ง์ง๋ง ๋ฌธ์ ๊น์ง์ ์ ๋ต์ด ์์๋๋ก ๋ค์ ๋ฐฐ์ด answers๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๋ง์ ๋ฌธ์ ๋ฅผ ๋งํ ์ฌ๋์ด ๋๊ตฌ์ธ์ง ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์กฐ๊ฑด
- ์ํ์ ์ต๋ 10,000 ๋ฌธ์ ๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค.
- ๋ฌธ์ ์ ์ ๋ต์ 1, 2, 3, 4, 5์ค ํ๋์ ๋๋ค.
- ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๋ฐ์ ์ฌ๋์ด ์ฌ๋ฟ์ผ ๊ฒฝ์ฐ, returnํ๋ ๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
[1,2,3,4,5] | [1] |
[1,3,2,4,2] | [1,2,3] |
ํต์ฌ:
1.1,2,3์ ๊ฐ ํจํด์ ์์๋ธ๋ค.
1 -> 5๋ก ๋๋ด์ ๋ ๋๋จธ์ง 5์ผ ๊ฒฝ์ฐ์ 5
2 ->ํ์์ธ ๊ฒฝ์ฐ์ 2 ์ง์์ผ๊ฒฝ์ฐ์ 8๋ก ๋๋ด์ ๋ ๋๋จธ์ง๊ฐ ๊ฐ๊ฐ 2,4,6,8
3 -> 5๋ก ๋๋ด์ ๋ ๋๋จธ์ง๊ฐ 1,2,3,4 5์ผ ๊ฒฝ์ฐ์ 0
2.ํจํด์ ์ด์ฉํ์ฌ answers์ด๋ ์ด ๊ฐ์ ๋ง๊ฒ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ count๋ณ์๋ฅผ ์์ฑํด answers์ ๊ฐ ๋ฐฐ์ด์ ๋น๊ตํด์ค๋ค. ๋ง์ฝ ๊ฐ์ด ๊ฐ์ ๋ count ์ซ์๋ฅผ +1ํด์ค๋ค.
3.๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์์๋ด ๋น๊ตํ๋ค. -> ์ด 10๊ฐ์ง
a,b,c ๋ชจ๋ ๊ฐ์ ๋ 1
a,b,c ์ค ๊ฐ์ฅ ํฐ ์๊ฐ ์์ ๋ 3
3๊ฐ ์ค ๋๊ฐ๊ฐ ๊ฐ๊ณ ๊ทธ ๋์๊ฐ ๋ ํด๋ 3
3๊ฐ ์ค ๋๊ฐ๊ฐ ๊ฐ๊ณ ๊ทธ ๋์๊ฐ ๋ ์์ ๋ 3
func solution(_ answers:[Int]) -> [Int] {
var a = [Int]()
var b = [Int]()
var c = [Int]()
var acount = 0
var bcount = 0
var ccount = 0
for number in 1...answers.count{
if number%5 != 0{
a.append(number%5)
}else{
a.append(5)
}
if number%2 != 0 {
b.append(2)
}else if number%8 == 2{
b.append(1)
}else if number%8 == 4{
b.append(3)
}else if number%8 == 6{
b.append(4)
}else if number%8 == 0{
b.append(5)
}
if number%5 == 1{
c.append(3)
c.append(3)
}else if number%5 == 2 {
c.append(1)
c.append(1)
}else if number%5 == 3 {
c.append(2)
c.append(2)
}else if number%5 == 4 {
c.append(4)
c.append(4)
}else if number%5 == 0 {
c.append(5)
c.append(5)
}
if a[number-1] == answers[number-1] {
acount += 1
}
if b[number-1] == answers[number-1]{
bcount += 1
}
if c[number-1] == answers[number-1]{
ccount += 1
}
}
if acount > bcount && acount > ccount{
return [1]
}else if bcount > acount && bcount > ccount{
return [2]
}else if ccount > acount && ccount > bcount{
return [3]
}else if acount == bcount && bcount > ccount{
return [1,2]
}else if acount == ccount && ccount > bcount{
return [1,3]
}else if ccount == bcount && bcount > acount{
return [2,3]
}else if acount == bcount && bcount < ccount{
return [3]
}else if acount == ccount && bcount > ccount{
return [2]
}else if bcount == ccount && acount > ccount{
return [1]
}else {
return [1,2,3]
}
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด ์ค ๊ฐ์ฅ ๊ฐ๊ฒฐํ ๊ฒ
ํต์ฌ :
1.a,b,c์ ํจํด์ ๋ฐ๋ณต๋๋ ๊ตฌ๊ฐ๋๋ก ๊ฐ ๊ฐ ์ ์ฅํด๋จ๋ค. ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํด์ 1,2,3์ ๋ถ๋ฅ
2.answers.enumerated()๋ผ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํด์ i,v๋ฅผ ๊ฐ ๊ฐ ํค์ ๋ฐธ๋ฅ๋ก ๊ฐ์ ์ค ex)answers[i] = v ์ ๊ฐ์ด ๊ฐ์ด ๋์ค๊ฒ ํจ.
3.answer = (a:[1,2,3,4,5]) ์ด๋ฐ ์๊ดํธ ์์ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฃ์ด์ฃผ๋ฉด answer.key๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋ฐฐ์ด์ ์ ์ ์์
4.a 5๊ฐ b๋ 8๊ฐ c๋ 10๊ฐ๊ฐ ๊ฐ ๊ฐ ๋ฐ๋ณต์ด๋ฏ๋ก index๋ฅผ %5 %8 %10ํด์ฃผ๋ฉด ๊ฐ ๋ฐฐ์ด์ ๊ฐ์ ๊ฐ์ด ๋์จ๋ค. ์ฌ๊ธฐ์ answers์ ๋ฐธ๋ฅ๊ฐ๊ณผ ๊ฐ๋ค๋ฉด point์ ๋ฐธ๋ฅ๊ฐ์ 1์ฉ ๋ํด์ค๋ผ
5.sorted{ $0.key < $1.key }๋ฅผ ์ด์ฉํด point์ ํค(1,2,3) ์ค ์ซ์๊ฐ ์ ์ ์์ผ๋ก ์ํ ํ๊ณ , filter{ $0.value == point.values.max()}๋ฅผ ์ด์ฉํด point์์ value๊ฐ ์ต๋๊ฐ์ธ ๊ฑธ ํํฐ,๊ทธ๋ฆฌ๊ณ map{$0.key} sorting๋ ์์ผ๋ก filter์ ํต๊ณผ๋ point์ key๋ค์ ๋ฐฐ์ด๋ก ๋ด์๋ผ
import Foundation
func solution(_ answers:[Int]) -> [Int] {
let answer = (
a: [1, 2, 3, 4, 5], // index % 5
b: [2, 1, 2, 3, 2, 4, 2, 5], // index % 8
c: [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] // index % 10
)
var point = [1:0, 2:0, 3:0]
for (i, v) in answers.enumerated() {
if v == answer.a[i % 5] { point[1] = point[1]! + 1 }
if v == answer.b[i % 8] { point[2] = point[2]! + 1 }
if v == answer.c[i % 10] { point[3] = point[3]! + 1 }
}
return point.sorted{ $0.key < $1.key }.filter{ $0.value == point.values.max() }.map{ $0.key }
}
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๋๋์ด ๋จ์ด์ง๋ ์ซ์ ๋ฐฐ์ด Swift (0) | 2020.02.11 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ์ด๋ฐ ๊ธ์ ๊ฐ์ ธ์ค๊ธฐ Swift (0) | 2020.02.09 |
ํ๋ก๊ทธ๋๋จธ์ค 2016๋ Swift (0) | 2020.02.09 |
ํ๋ก๊ทธ๋๋จธ์ค ์ฒด์ก๋ณต Swift (0) | 2020.02.08 |
Swift ํ๋ก๊ทธ๋๋จธ์ค K๋ฒ์งธ ์ (0) | 2020.02.07 |
๋๊ธ