eaz_coding

[Programmers] 테이블 해시 함수(Python, Javascript) 본문

eaz_algorithm

[Programmers] 테이블 해시 함수(Python, Javascript)

eaz_silver 2024. 6. 17. 22:05
function solution(data, col, row_begin, row_end) {
    data.sort((a, b) => {
        return a[col-1] == b[col-1] ? b[0] - a[0] : a[col-1] - b[col-1]
    })
    
    let lst = []
    for (let i = row_begin-1; i < row_end; i++){
        t = 0;
        for (let j of data[i]) {
            t += (j % (i+1));
        }
        lst.push(t);
    }
    
    let answer = lst[0];
    for (let i = 1; i < lst.length; i++){
        answer ^= lst[i];
    }
    
    return answer;
}

문제

https://school.programmers.co.kr/learn/courses/30/lessons/147354

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


풀이

입원 이슈로 오랜만에 푸는 알고리즘 ㅎㅅㅎ 다시 루틴 찾아야겠다

 

Python

xor은 ^, and 는 &, or은 |, 알기만 하고 알고리즘에서 직접 사용한 적이 없었는데

모르고 있으면 고생해서 풀었을 것 같다.

def solution(data, col, row_begin, row_end):
    lst = sorted(data, key = lambda x : (x[col-1], -x[0]))
    
    tmp = []
    for i in range(row_begin-1, row_end):
        t = 0
        for j in lst[i]:
            t += (j % (i+1))
        tmp.append(t)
    
    answer = tmp[0]
    for i in range(1, len(tmp)):
        answer ^= tmp[i]

    return answer

 

Javascript

Javascript 도 ^, &, |

function solution(data, col, row_begin, row_end) {
    data.sort((a, b) => {
        return a[col-1] == b[col-1] ? b[0] - a[0] : a[col-1] - b[col-1]
    })
    
    let lst = []
    for (let i = row_begin-1; i < row_end; i++){
        t = 0;
        for (let j of data[i]) {
            t += (j % (i+1));
        }
        lst.push(t);
    }
    
    let answer = lst[0];
    for (let i = 1; i < lst.length; i++){
        answer ^= lst[i];
    }
    
    return answer;
}

 

풀진 않았지만 Java도 ^, &, |