
첫 번째 솔루션
2차원 배열로 풀어보았는데, 요소들의 값을 하나씩 비교하여 출력용으로 2차원 배열에 넣어보았습니다.
import Foundation
func solution(_ array: (Int)) -> Int {
var myArray = ((Int))()
var Array = (Int)()
var count = 0
var result = 0
var i = 0
var j = 0
var k = 0
while i < array.count {
while j < array.count {
if array(i) == array(j) {
count += 1
}
print("( i =" ,array(i),", j =",array(j),")", "count = ", count);
j += 1
}
myArray.append((array(i),count))
i += 1
j = 0
print("myArray = ", myArray)
count = 0
}
while k < myArray.count - 1 {
if myArray(k)(1) <= myArray(k+1)(1) {
result = myArray(k+1)(1)
} else {
result = myArray(k)(1)
}
k += 1
}
return result
}
두 번째 해결책
요소의 수가 최대 1000개이므로 문제를 사용하여 1000개의 새 배열을 만들고 숫자에 해당하는 배열의 자릿수에 +1을 추가했습니다.
그런 다음 새 행에 4개의 3이 있으면 새 행의 세 번째 위치에 4가 있습니다.
그것들을 비교하여 가장 높은 숫자를 가진 배열 요소 자릿수를 얻고 그것을 출력하십시오
func solution(_ array:(Int)) -> Int {
var maximum = 0
var result = 0
var myArray = (Int)(repeating: 0, count: 1000) // 원소를 1000개를 가진 배열 생성
for i in array {
myArray(i) += 1 // 입력받은 수를 myArray 배열의 위치자리로 1씩 더해줌
}
// 0...array는 배열의 인덱스 범위를 0부터 배열의 마지막 인덱스까지 모두 포함
// 0..<array는 배열의 인덱스 범위를 0부터 배열의 마지막 인덱스 바로 이전까지만 포함
for i in 0..<myArray.count{
if maximum < myArray(i) { // 비교하는 것을 줄이기 위해, maximum을 하나씩 비교
maximum = myArray(i) // 비교하였을때 maimum보다 크면 myArra안에 있는 수를 maimum에 대입
result = i // myArray 배열의 위치자리를 찾아서 넣어줌
} else if maximum == myArray(i){
result = -1 // myArray의 원소가 같다면 max<myArray가 실행되지 않음, 같을때 -1 출력
}
}
return result
}
![[알고리즘이론] 파이썬 자료구조 [알고리즘이론] 파이썬 자료구조](https://file.foodle.kr/wp-content/plugins/contextual-related-posts/default.png)