튜플 (Level2)
link - https://programmers.co.kr/learn/courses/30/lessons/64065
1. 문제 파악하기
- 입력 : 튜플로 만든 집합이 배열로 나열된 스트링 (ex. {{2},{2,1},{2,1,3},{2,1,3,4}})
- 출력 : 집합들을 이용해 튜플을 유추하여 튜플을 배열로 리턴한다
*튜플
튜플은 다음과 같은 성질을 가지고 있습니다.
- 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2)
- 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2)
- 튜플의 원소 개수는 유한합니다.
2. 아이디어
- 튜플이 무엇인지 이하하기까지가 좀 어려웠다
- 튜플로 만든 집합에 들어있는 숫자의 횟수가 클수록 많을수록 튜플의 선수에 나오는 숫자이다 (규칙)
- '{;', '}' , ',' 이 아닌 숫자들을 hash map 에 key로 저장하고 value로 key가 나온 횟수를 저장한다 .
- map을 돌며 value - 1에 해당하는 index에 key를 저장한후 해당 배열을 return
ex ) map에 111 - 2 / 20 - 1 로 저장된경우 111은 2번 , 20은 1 번 들어있는경우
정답을 return할 배열 index 0 에 20 (value(1) - 1) / 배열 index 1에 111 (value(2) - 1) 을 넣은후 리턴 한다
3. 풀이
class Solution {
var map = HashMap<String, Int>()
fun solution(s: String): IntArray {
var tempString = ""
for(i in 0 until s.length) {
if(s[i] != '{' && s[i] != '}' && s[i] != ',') {
tempString += s[i].toString()
} else {
if (tempString != "") {
var t = map.get(tempString) ?: 0
map.put(tempString, t+1)
tempString = ""
}
}
}
var answer: Array<Int> = Array(map.size) {0}
var t: Array<Int> = Array(map.size) {0}
for ((k, v) in map) {
t[v-1] = k.toInt()
}
t.mapIndexed { i, v ->
answer[t.size - i - 1] = v
}
return answer.toIntArray()
}
}
|
cs |
'Programmers' 카테고리의 다른 글
[Programmers] 삼각달팽이 - kotlin (0) | 2021.08.30 |
---|---|
[Programmers] 다리를 지나는 트럭 - kotlin (0) | 2021.08.22 |
[Programmers] 소수찾기 - kotlin (0) | 2021.08.18 |
[Programmers] 가장 긴 팰린드롬 - kotlin (0) | 2021.08.11 |
[Programmers] 괄호 회전하기 - kotlin (0) | 2021.07.15 |