import Foundation
func answerCountOfOne(_ n: Int, _ answers: [Int]) -> Int {
var result = 0 // 정답 개수
for i in 1...n {
var mark = -1 // 체크한 정답
if i % 5 == 0 {
mark = 5
} else {
mark = i
}
if answers[mark-1] == mark {
result += 1
}
}
return result
}
func answerCountOfTwo(_ n: Int, _ answers: [Int]) -> Int {
var markSheet = [Int]()
for i in 1...n/2+1 {
markSheet.append(2)
var mark = -1
if i % 5 == 0 {
mark = 5
} else {
mark = i
}
markSheet.append(mark)
}
var result = 0
for i in 0..<n {
if markSheet[i] == answers[i] {
result += 1
}
}
return result
}
func answerCountOfThree(_ n: Int, _ answers: [Int]) -> Int {
var markSheet = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
while true {
if markSheet.count < n { // 짧으면 답안 추가하기
markSheet += markSheet
} else {
break
}
}
var result = 0
for i in 0..<n {
if answers[i] == markSheet[i] {
result += 1
}
}
return result
}
func solution(_ answers:[Int]) -> [Int] {
let n = answers.count // 문제 개수
var scores = [Int]() // 맞은 개수
// 1번 수포자 방식
let scoreOne = answerCountOfOne(n, answers)
scores.append(scoreOne)
// 2번 수포자 방식
let scoreTwo = answerCountOfTwo(n, answers)
scores.append(scoreTwo)
// 3번 수포자 방식
let scoreThree = answerCountOfThree(n, answers)
scores.append(scoreThree)
let maxVal = max(max(scoreOne, scoreTwo), scoreThree)
var result = [Int]()
for i in 1...3 {
if maxVal == scores[i] {
result.append(i)
}
}
return result
}
정확성: 50.0 😂
합계: 50.0 / 100.0 😂
markSheet으로 답안을 다 작성하는 방식으로 만들었는데
다른 사람들의 풀이를 보니 답안을 뭉텅이로 가져다 쓰더라
[1, 2, 3, 4, 5]
[2, 1, 2, 2, 2, 3, 2, 4, 2, 5]
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
import Foundation
func solution(_ answers:[Int]) -> [Int] {
let hater1 = [1, 2, 3, 4, 5]
let hater2 = [2, 1, 2, 2, 2, 3, 2, 4, 2, 5]
let hater3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
var scores = [0, 0, 0]
for i in 0..<answers.count {
if answers[i] == hater1[i % hater1.count] {
scores[0] += 1
}
if answers[i] == hater2[i % hater2.count] {
scores[1] += 1
}
if answers[i] == hater3[i % hater3.count] {
scores[2] += 1
}
}
let maxVal = scores.max()
var result = [Int]()
for i in 0..<scores.count {
if scores[i] == maxVal {
result.append(i+1)
}
}
return result
}
정확성: 64.3 😂
합계: 64.3 / 100.0 😂
모르겠다...
테스트케이스 1, 6, 10, 11, 13을 통과하지 못했었는데
let hater2 = [2, 1, 2, 2, 2, 3, 2, 4, 2, 5]
가 아니라
let hater2 = [2, 1, 2, 3, 2, 4, 2, 5]
이거였다...
스위프트는 순열과 조합이 너무 까다롭다...😂
https://gimjinging.tistory.com/133
var setArr = Set<Int>() = []
setArr.insert(값)
에라토스테네스의 체
라는 알고리즘이다제곱근
한 범위만큼이 특정 수로 나눠지는지 체크하는 것이다