https://school.programmers.co.kr/learn/courses/30/lessons/147354
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 해석
테이블과 col, row_begin, row_end가 주어진다.
해당 변수들을 이용해 주어진 규칙에 따라 생성되는 해시함수를 구현하면 되는 문제이다.
문제 풀이
1. col번째 컬럼값 기준으로 오름차순 정렬을 한다. 이때 첫번째 컬럼값은 기본키이다.
기본키는 중복된 값을 갖지 않으며, col번째 컬럼값 기준으로 오름차순 정렬할 때 중복된 값이 존재하면 첫번째 컬럼값 기준으로 내림차순 정렬해준다.
2. 정렬된 데이터를 row_begin 부터 row_end까지 순회하며 mod i 한 값을 모두 더해준다.
3. 2번에서 도출된 모든 값을 bitwise XOR 연산을 해준다.
주어진 문제의 조건에따라 차례대로 구현하면 된다.
i번째 컬럼이 1부터 시작하므로 -1 해주는 경우만 조심하면 된다.
문제 코드
def solution(data, col, row_begin, row_end):
answer = 0
# 정렬
data = sorted(data, key = lambda x: [x[col - 1], -x[0]])
for i in range(row_begin, row_end + 1):
total = 0
# i행에 대해 mod 연산
for j in data[i - 1]:
total += (j % i)
# mod 연산된 값의 합을 XOR연산
answer ^= total
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 표현 가능한 이진트리 (0) | 2023.01.17 |
---|---|
[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 개인정보 수집 유효기간 (0) | 2023.01.16 |
[프로그래머스 / 파이썬] 마법의 엘리베이터 (0) | 2023.01.08 |
[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 이모티콘 할인행사 (3) | 2023.01.08 |
[프로그래머스 / 파이썬] 2023 KAKAO BLIND RECRUITMENT 택배 배달과 수거하기 (4) | 2023.01.06 |