문제해결을 위한 공부내용
-for 반복문에 대한 깊은 이해
-제한조건인 (가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요)를 이해하기
나의 첫번째 답지(장문주의... 이거 생각하느라 2~3시간 문제만 쳐다봄)
func solution(_ answers:[Int]) -> [Int] {
var student1: [Int] = [1,2,3,4,5]
var student2: [Int] = [2,1,2,3,2,4,2,5]
var student3: [Int] = [3,3,1,1,2,2,4,4,5,5]
var studentCount:[Int] = [0,0,0]
var result: [Int] = []
for i in 0..<answers.count{
if answers[i] == student1[i % 5] { // student1 배열 반복을 위해서 [i % 5]
studentCount[0] += 1
if answers[i] == student2[i % 8] { //첫번째 if 문이 가장 힘들었다
studentCount[1] += 1 // 만약 student1과 같으면 student2와도 같은지 봐야함
if answers[i] == student3[i % 10] { //만약 student2와 같으면 student 3과 같은지 봐야함
studentCount[2] += 1 }
} else if answers[i] == student3[i % 10] { // 만약 student2와는 같지 않지만 student 3과 같은지 봐야함
studentCount[2] += 1 }
} else if answers[i] == student2[i % 8] {
studentCount[1] += 1
if answers[i] == student3[i % 10] {
studentCount[2] += 1 }
} else if answers[i] == student3[i % 10] {
studentCount[2] += 1
}}
for i in 0..<studentCount.count {
if studentCount.sorted(by: >)[0] == studentCount[i] {
result += [i+1]
// 이거 고민하느라 꽤 힘듬. 각 카운트 올라간게 서로 중복되면 같이 출력해야해서..
//[0,0,0]에서 가장 카운트 높은 순서대로 나열 후에 [0]인 가장 첫번째만 sort함
//그리고 각 studentCount[i] 의 숫자가 가장 높은 수와 같으면
// result 새로운 배열에 [i+1]
}
}
return result
}
정리한 최종 문제풀이
func solution(_ answers:[Int]) -> [Int] {
var student1: [Int] = [1,2,3,4,5]
var student2: [Int] = [2,1,2,3,2,4,2,5]
var student3: [Int] = [3,3,1,1,2,2,4,4,5,5]
var studentCount:[Int] = [0,0,0]
var result: [Int] = []
for i in 0..<answers.count{
// if else 를 안해도 됨을 알게되어 버렸다...하 ~.~ 정말 바보
if answers[i] == student1[i % 5] { studentCount[0] += 1}
if answers[i] == student2[i % 8] { studentCount[1] += 1}
if answers[i] == student3[i % 10]{ studentCount[2] += 1}
}
for i in 0..<studentCount.count {
if studentCount.sorted(by: >)[0] == studentCount[i] {
result += [i+1] }
}
return result}
결국 첫번째 답지가 길었던 이유는
if else로 모든 처리를 안해도 됨을 알게되어 버렸다는 것.....하 ~.~ 정말 바보
생각보다 쉽다 생각했는데 중간중간 생각할게 너무 많았다
아직 알고리즘 공부를 시작하지 않았어서 그런지...
완전탐색 쉽게 봤다가 몇시간 잡아먹음 ㅠㅠ...
고수들은 역시 쉽게 푼다..
하지만 최대시간이 내가 더 낮아서 만족하는 걸로^^