[Python] 프로그래머스 / 해시 / sort 다중정렬 / 하나의 리스트에서 문자 비교 / 이진수 나타내기

2024. 3. 4. 11:00Coding Test/Python

def solution(data, col, row_begin, row_end):
    answer = []
    mod = 0
    result = []
    data.sort(key = lambda x : (x[col-1], -x[0])) # 정렬
    for i in range(row_begin, row_end+1):
        for j in data[i-1]:
            mod += j%i
        answer.append(format(mod, '04b'))
    
    for k, l in zip(answer, answer[1:]):
        for a in range(len(k)):
            if k[a]==l[a]:
                result.append("0")
            else:
                result.append("1")
    return int(''.join(result), 2)

 

이런식으로 하고 고쳐보다가 답이 안나왔었다... ;0;

 

def solution(data, col, row_begin, row_end):
    answer = 0
    
    data.sort(key = lambda x : (x[col-1], -x[0])) # 정렬
    for i in range(row_begin, row_end+1):
        result = 0
        for j in data[i-1]: # i번째 행
            result += j%i
        answer = answer ^ result # XOR 연산
    return answer

 

한 행이 끝나면 result를 초기화 해주고

정수들 간의 XOR 연산은 각 비트를 서로 비교하여 같으면 0을, 다르면 1을 반환.

 

2가지 조건이 주어졌을때

배열.sort(key=lambda, x:[첫번째 조건, 두번째 조건]

 

ref :


https://velog.io/@damin1025/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%85%8C%EC%9D%B4%EB%B8%94-%ED%95%B4%EC%8B%9C-%ED%95%A8%EC%88%98

 

프로그래머스 - 테이블 해시 함수

완호가 관리하는 어떤 데이터베이스의 한 테이블은 모두 정수 타입인 컬럼들로 이루어져 있습니다. 테이블은 2차원 행렬로 표현할 수 있으며 열은 컬럼을 나타내고, 행은 튜플을 나타냅니다.첫

velog.io