[알고리즘] range 증가 / 감소

Sun Ah Min·2023년 9월 9일
0

Algorithm

목록 보기
3/3

✨ 아래 문제를 통해 for문에서 range를 사용할 때 헷갈리지 말아야 할 부분을 다뤄보겠다. 출처: 높은 수에서 낮은 수까지

높은 수에서 낮은 수까지

두 개의 정수a, b를 입력받아 큰 수부터 작은 수까지 차례대로 출력하는 프로그램을 작성해보세요.

입력 형식

정수 a, b를 공백을 사이에 두고 주어집니다.

  • 1 ≤ a, b ≤ 50

출력 형식

a, b중 큰 수에서 작은 수까지 차례로 1씩 감소하며 공백을 사이에 두고 출력합니다.

예제

입력: 22 31

출력: 31 30 29 28 27 26 25 24 23 22

풀이 1

Comment: 처음엔 단순히 이렇게 풀었다. 그러나 더 효율적인 방법이 있음을 금새 깨달았다. 지금 나는 range를 하나씩 증가하게끔 사용하고 있었는데, 반대로 감소시키는 방법이 있기 때문이다.

a, b = map(int, input().split())

if a <=b:
    for _ in range(a, b+1):
        print(b, end=" ")
        b -= 1
else:
    for _ in range(b, a+1):
        print(a, end=" ")
        a -= 1

풀이 2

Comment: b가 a보다 작을 경우, a를 초기값으로 하고 i가 b보다 같거나 큰 경우에만 수행되도록 조건을 걸고, a의 값을 1씩 감소시키는 for문을 실행할 때 각 변수 i의 값을 공백을 두고 차례대로 출력한다.

a, b = map(int, input().split())

if a > b:
    for i in range(a, b-1, -1):
        print(i, end=" ")
else:
    for i in range(b, a-1, -1):
        print(i, end=" ") 

정리하자면,

  • for문에서 _를 사용하는 대시 i를 사용해야 한다.
  • range에서 두번째 자리에 오는 숫자는 조건문이 수행되도록 원하는 숫자보다 증가할 때는 +1, 감소할 때는 -1을 해주어야 한다.
  • 그리고 마지막에 오는 숫자가 증가할지 감소할지를 정한다.

이렇게 코드를 간소화할 수 있는 부분을 발견할 때마다 짜릿하다.
예전에는 머리로만 알고 넘겼던 부분들인데, 하나씩 기록해보기로 했다.

Back to the Basic ~ 😇

profile
나는 커서 무려 내가 되겠지

0개의 댓글