728x90
⬛ 프로그래머스 | LV.2 테이블 해시 함수 - 구현 문풀 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/147354
💚문제 접근 방식
처음에는 문제가 무슨 말인지 이해가 도통 안됐었다 ..
그러니까 테이블 상에 행 단위로 데이터가 들어올 건데, 입력된 col번째 값 기준으로 오름차순 정렬하되, col번째 값이 같은 경우 첫 번째 값 기준으로 내림차순 정렬을 하고,
정렬된 상태에서는 입력된 row_begin~ed 범위의 데이터에 한해 XOR 값을 해시값으로 변환하여 리턴하라는 문제였다.
1) Arrays.sort 로 입력된 data를 주어진 정렬 조건대로 정렬한다.
2) 정렬된 상태에서 row_begin~end 범위에 있는 각 행의 data들에 대해서 행i로 나눈값을 누적한 뒤 XOR 연산한 값을 구하여 리턴하면 된다.
💚 제출 코드
import java.util.*;
class Solution {
//솔루션 함수
public int solution(int[][] data, int col, int row_begin, int row_end) {
int answer = 0;
//정렬 조건 - col번째 값 기준 오름차순 && 같은 경우 첫 번째 값 오름차순
Arrays.sort(data, (o1, o2) -> {
if(o1[col-1] == o2[col-1]) return o2[0] - o1[0];
return o1[col-1] - o2[col-1];
});
//정렬된 상태에서 row_bgin~end 까지는 XOR 값을 해시값으로 변환하기
for(int i=row_begin-1; i<row_end ; i++){
int S_i = 0;
for(int d : data[i]) S_i += (d % (i+1));
answer ^= S_i;
}
return answer;
}
}
728x90
'코딩 테스트 [준비] > [문풀] 프로그래머스_문풀_조지기' 카테고리의 다른 글
프로그래머스 | LV.2 3월에 태어난 여성 회원 목록 출력하기 (MySQL) (0) | 2024.04.01 |
---|---|
프로그래머스 | LV.2 호텔 대실 - 구현 문풀 (Java) (1) | 2024.04.01 |
프로그래머스 (Summer/Winter Conding ~2018) | LV.2 배달 - 다익스트라 문풀 (Java) (21) | 2024.04.01 |
프로그래머스 | LV.2 하노이의 탑 - 재귀 문풀 (Java) (25) | 2024.03.29 |
프로그래머스 | LV.2 연도 별 평균 미세먼지 농도 조회하기 (MySQL) (22) | 2024.03.28 |