이것저것

네이버 부스트캠프 웹,모바일 자가진단 함수 구현

유사앱등이 2022. 6. 9. 14:20

 

어제 설명회에서 자가진단이란 걸 해보라길래.. 해봤는데 재미있었음!

함수 구현하는 문항도 있던데 따로 제출하는 건 아닌듯..?하여 

만든 코드가 아까워서 올려봅니다

 

문제는 아래와 같음.. 긁어와도 되나?

 

 


자연수가 들어있는 배열 arr가 매개변수로 주어집니다. 배열 arr안의 숫자들 중에서 앞에 있는 숫자들부터 뒤에 중복되어 나타나는 숫자들 중복 횟수를 계산해서 배열로 return 하도록 solution 함수를 완성해주세요. 만약 중복되는 숫자가 없다면 배열에 -1을 채워서 return 하세요.

 

▶입출력 예 #1

arr = [1, 2, 3, 3, 3, 3, 4, 4]에서 3은 4번, 4는 2번씩 나타나므로 [4, 2]를 반환합니다.

 

▶입출력 예 #2

arr = [3, 2, 4, 4, 2, 5, 2, 5, 5]이면 2가 3회, 4가 2회, 5가 3회 나타나므로 [3, 2, 3]를 반환합니다.

 

▶입출력 예 #3

[3, 5, 7, 9, 1]에서 중복해서 나타나는 숫자는 없으므로 [-1]을 반환합니다.

 

##### 제한사항

- 배열 arr의 길이는 1 이상 100 이하의 자연수입니다.

- 배열 arr의 원소는 1 이상 100 이하의 자연수입니다.


 

 

사용언어는 swift이고,

해시테이블 만들어서 사용함~_~

 

func overlap(_ arr:[Int]) {
	var hash = [Int:Int]()
	for i in arr {
		if hash[i] == nil {
			hash[i] = 1
		} else {
			hash[i]! += 1
		}
	}

	var isCheck = [Int:Bool]()
	var result = [Int]()
	for i in arr {
		if hash[i]! > 1 && isCheck[i] != true {
			result.append(hash[i]!)
			isCheck[i] = true
		}
	}
	if result.count == 0 {
		result.append(-1)
	}

	print(result)	
}

 

잘되네요