[백준 python] 10819번 차이를 최대로 -재귀, 순열 풀이

2022. 4. 4. 22:51·지난 글 모음
반응형

[백준 python] 10819번 차이를 최대로 -재귀, 순열 풀이

레벨: 실버 1

언어: python


문제풀러가기

📑풀이 과정

재귀와 순열 각 다른 방식으로 풀어 보았다.

1번 재귀

n = int(input())
in_list = list(map(int ,input().split()))
visited = [False]*n
answer = 0
def sol(li):
  global answer
  if len(li) == n:
    total = 0
    for i in range(n-1):
      total += abs(li[i]- li[i+1])
    answer = max(answer, total)
    return

  for i in range(n):
    if not visited[i]:
      visited[i] = True
      li.append(in_list[i])
      sol(li)
      visited[i] = False
      li.pop()

sol([])
print(answer)

입력으로 숫자 배열은 받는데 이미 계산한 숫자를 확인하기 위해 visited 배열을 만들었다.
그리고 매개변수로 배열을 넘겨주고 배열에 숫자를 하나씩 넣고 다시 sol 함수를 호출한다.
매개변수로 넘긴 배열의 길이가 n과 같으면 문제에서 주어진 계산 방식으로 계산한다.
계산 결과가 최대 값인지 확인 후 최대값이면 answer에 저장하고 리턴한다.

지금 이 풀이를 작성하다 보니 visited 배열을 구지 사용하지 않고 매개변수 안에 포함 되어 있는지 확인해도 같은 동작을 할 것으로 예상된다. 이 부분은 다시 작성 해보도록한다.

2번 순열

from itertools import permutations

n = int(input())
arr = list(map(int ,input().split()))

permu = list(permutations(arr, n))
def calculator(li):
  total = 0
  for i in range(len(li)-1):
    total += abs(li[i]-li[i+1])
  return total

answer = -1e9
for li in permu:
  answer = max(answer, calculator(li))

print(answer)

이 문제는 순열을 사용해서 손 쉽게 풀 수 있다.
최소 숫자도 8까지여서 시간적으로도 충분하다
순열로 들어오는 수의 모든 경우를 다 뽑아서 문제에서 주어진 계산 방식으로 계산하고 최댓값을 만들면 된다.


반응형

'지난 글 모음' 카테고리의 다른 글

[백준 python] 10000번 원 영역  (2) 2022.04.10
[week02] SW정글 2주 차 회고  (1) 2022.04.10
[week00] sw정글 0주차 - 팀 프로젝트  (0) 2022.04.04
[week01] 정글 1주일 차 회고  (1) 2022.04.04
sw정글 - [week01] 특별한 과제(에세이)  (3) 2022.04.02
'지난 글 모음' 카테고리의 다른 글
  • [백준 python] 10000번 원 영역
  • [week02] SW정글 2주 차 회고
  • [week00] sw정글 0주차 - 팀 프로젝트
  • [week01] 정글 1주일 차 회고
코딩하자영아
코딩하자영아
코딩공부내용 정리
  • 코딩하자영아
    코드치고 무게치고
    코딩하자영아
  • 전체
    오늘
    어제
    • 분류 전체보기 (82)
      • 개발 (1)
      • 지난 글 모음 (81)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SW정글
    dfsbfs
    Coding Test
    onChange
    malloc-lab
    자바스크립트 문자열 변수
    JavaScrpit
    html input
    템플릿 문자열
    회원가입 폼
    리액트
    정글sw
    python
    코딩테스트
    백준
    React
    sw 정글
    Express
    Spring
    PINTOS
    자바스크립트
    node.js
    conding test
    sw정글사관학교
    사용자 정의 객체
    HTML
    목록 창 만들기
    javascript
    회원가입
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
코딩하자영아
[백준 python] 10819번 차이를 최대로 -재귀, 순열 풀이
상단으로

티스토리툴바