https://www.hackerrank.com/challenges/compare-the-triplets/problem?isFullScreen=true
이 문제 풀다가 정리한 것 (HackerRank > Compare the Triplets)
문제 상황
아래와 같은 int형 배열이 있을 때,
int shortArray[] = new int[2];
int longArray[[] = new int[12345];
각 언어에서 어떻게 list로 변환하느냐?
근데 언어에 따라 List -> 배열로 바꾸는 것도 있음.
Java 7
길이가 짧은 배열 -> Arrays.asList() 사용
Arrays.asList(shortArray[0], shortArray[1]);
길이가 긴 배열 -> 반복문 사용하여 list에 추가
List<Integer> list = new ArrayList<>();
for (int value : longArray) {
list.add(value);
}
Java 9 이상
길이가 짧은 배열 -> List.of() 사용 (Java 9 이상부터 List.of 지원)
List.of(scores[0], scores[1]); // Java 9 이상에서 사용 가능
길이가 긴 배열 -> stream 사용 (Java 8 이상에서도 가능)
return Arrays.stream(longArray)
.boxed() // int -> Integer로 변환
.collect(Collectors.toList()); // list로 변환
Kotlin
길이가 짧은 배열 -> arrayOf 사용
arrayOf(shortArray[0], shortArray[1])
길이가 긴 배열 -> toTypedArray 사용
val resultList = mutableListOf<Int>()
// 중간 로직
return resultList.toTypedArray() // MutableList<Int>를 Array<Int>로 변환
근데 논외로.. 이 문제는 이렇게 풀 수도 있다고 함.
fun compareTriplets(a: Array<Int>, b: Array<Int>): Array<Int> {
return (0 until a.size).fold(arrayOf(0, 0)) { acc, i ->
when {
a[i] > b[i] -> acc[0]++;
a[i] < b[i] -> acc[1]++;
}
acc
}
}
TypeScript
길이가 짧은 배열 -> 그냥 넣기
let aliceScore = 0;
let bobScore = 0;
// 중간 로직
return [aliceScore, bobScore];
길이가 긴 배열 -> 전개 연산자
return [...array];
반복문을 사용한 생성
let list: number[] = [];
for (let value of array) {
list.push(value); // 배열의 각 요소를 리스트에 추가
}
return list;
'Programming Language > 코딩테스트' 카테고리의 다른 글
[Java/Kotlin/TypeScript] 배열의 값 한번에 더하기 (A Very Big Sum) (3) | 2024.11.05 |
---|---|
[Java/Kotlin/TypeScript] 반복문 돌면서 합 구하기 (0) | 2024.11.01 |