728x90
반응형
1. 문제 설명
반응형
2. 풀이과정
해당 문제는 처음에 정렬만 잘해주면 나머지는 쉽게 해결할 수 있다.
테이블의 튜플을 정렬할 때 기준은 2개가 있는데, col 번째 칼럼의 값을 기준으로 오름차순 정렬하고 만약 그 값이 동일하면 기본키인 첫 번째 칼럼의 값을 기준으로 내림차순 정렬한다.
해당 기준으로 정렬을 하려면 거꾸로 기본키 값으로 먼저 내림차순 정렬을 하고, 이후에 col 번째 칼럼의 값을 기준으로 정렬하면 원하는 정렬 후 결과를 얻을 수 있다.
테이블의 튜플을 정렬했다면 S_i를 각각 구하여 모든 S_i 결과를 XOR 하면 된다.
- 기본키를 기준으로 우선 내림차순 정렬을 한다. data = sorted(data, key = lambda x : x[0], reverse = True)
- 이후 col 번째 칼럼의 값을 기준으로 오름차순 정렬을 한다. data = sorted(data, key = lambda x : x[col - 1])
- S_i 결과를 저장할 리스트를 생성한다. result = []
- 문제에서 주어진 i 값을 반복하며 for i in range(row_begin, row_end + 1)
- S_i 값을 저장할 변수를 생성하고 초기화한다. SUM = 0
- i번째 행의 튜플을 불러와 각 칼럼의 값을 i로 나눈 나머지를 합한다. for d in data[i - 1]: SUM += d % i
- 최종 합을 결과 리스트에 추가한다. result.append(SUM)
- 결과 리스트의 값을 하나씩 불러와 XOR 한 결과를 정답으로 저장한다. for r in result: answer = answer ^ r
3. 소스코드
def solution(data, col, row_begin, row_end):
answer = 0
data = sorted(data, key = lambda x : x[0], reverse = True)
data = sorted(data, key = lambda x : x[col - 1])
result = []
for i in range(row_begin, row_end + 1):
SUM = 0
for d in data[i - 1]:
SUM += d % i
result.append(SUM)
for r in result:
answer = answer ^ r
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형 찾기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.07.03 |
---|---|
[프로그래머스] 리코쳇 로봇 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.07.02 |
[프로그래머스] 거리두기 확인하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.06.26 |
[프로그래머스] 여행경로 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.06.15 |
[프로그래머스] 미로 탈출 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.05.26 |
[프로그래머스] 행렬 테두리 회전하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.05.19 |
[프로그래머스] 수식 최대화 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.05.11 |
[프로그래머스] 괄호 변환 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.05.05 |