Python
팰린드롬
  • list, map, int, str
  • 두 리스트의 값을 매칭하는 방법

    Created by
  • 서경태
  • Created at
    제목이 맞는지 모르겠지만 문제는 이렇다.
    ❓
    어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
    absolutes = [4, 7, 12]
    signs= [True, False, True]
    일때 True는 양수, False는 음수를 나타낸다.
    결과는 4 +(-7) + 12 = 9가 나온다.
    처음 문제를 보고 어떻게 접근할지 고민이 많았다.
    1.
    역순으로 문제 풀기
    사실 저 문제는 이미 어떤 정수들이 주어지고 그 정수를 거르고 걸러 만든 리스트가 아닌가. if n ≥ 0 이면 Ture, if < 0 이면 False인 것이다. 그러니 역순으로 올라가면 되는거지! 근데 if문을 어떻게 역으로 타고 올라가... 실패
    2.
    zip 함수를 사용한다.
    zip함수는 두 리스트를 첫번째, 두번째, 세번째 끼리 짝지어줘서 튜플로 결과값을 내준다. signs 리스트의 True는 '+'로 False는 '-'로 바꾼후 zip으로 짝지은 후 어찌어찌 조건문을 걸고 변환해서 만들 수 있지 않을까? 했는데 문자열 '+'는 0으로 변환한다해도 문자열 '-'는 어떻게 처리할지 실마리를 찾지 못했다.
    3.
    GPT한테 물어봤다. (진짜 엄청 돌려돌려 물어봤다.)
    🖥️
    absolutes = [4, 7, 12]
    signs = [True, False, True]
    converted_signs = []
    for i in signs:
    if i:
    converted_signs.append("+")
    else:
    converted_signs.append("-")
    pair_list = []
    for pair in zip(converted_signs, absolutes):
    pair_list.append(list(pair))
    print(pair)
    print(pair_list)
    zip 함수로 짝을 지어 정수 4, 17, 12 리스트를 만들고 싶다 했더니... 역시 찰떡 같이 알아듣고 True 일 때 + False일 때 -로 변환해서 숫자를 구해주었다.
    🖥️
    absolutes = [4, 7, 12]
    signs = [True, False, True]
    answer = []
    for i in range(len(absolutes))
    if signs[i]:
    answer.append(absolutes[i])
    else:
    answer.append(-absolutes[i])
    매치 시켜서 맞으면 변환하고 그걸 또 하고 하는 꽤나 긴 코드가 나올거라 생각했는데 의외로 간단했고 for 반복문의 힘을 다시 한 번 느꼈다.
    리스트안에서 저렇게 매개변수를 사용하는것도 처음 봤다.
    a.
    반복문에서 i가 absolutes의 수만큼 돈다.
    b.
    signs안에서 i가 True면 answer에 absolutes 속 i를 추가한다.
    c.
    signs안에서 i가 False면 answer에 absolutes 속 -i를 추가한다.
    이렇게 만들수 있다는게 너무 신기하다. 생각을 컴퓨터적으로 해야하는 것 같다.