Coding/초보자를 위한 파이썬 300제

초보자를 위한 파이썬 300제 // 177 index

포스트it 2021. 2. 7. 00:40
728x90
반응형

 

문제

반복문과 range 함수를 사용해서 my_list를 아래와 같이 출력하라.

my_list = ["가", "나", "다", "라"]

라 다
다 나
나 가

내풀이

my_list = ["가", "나", "다", "라"]
for i in range(1,4):
    print(my_list[-i], my_list[-i-1])
    
결과값
라 다
다 나
나 가

정답

어렵다면 우선은 for문을 사용하지 않고 아래와 같이 인덱싱을 사용해서 코드를 작성합니다. 규칙이 눈에 들어오나요?

print(my_list[3], my_list[2])
print(my_list[2], my_list[1])
print(my_list[1], my_list[0])

각 라인마다 인덱스가 1씩 감소하고, 같은 라인에서 우측 인덱스는 좌측 보다 1 작다고 분석할 수 있습니다. 이를 코드로 옮기면 아래와 같습니다.

for i in [3, 2, 1] :
    print(my_list[i], my_list[i-1])

인덱스를 만들어내는 방법에 따라 호출하는 코드가 달라집니다. 우변을 기준으로 인덱스를 만들고 좌변을 접근할 때는 +1 이 필요합니다.

for i in [2, 1, 0] :
    print(my_list[i+1], my_list[i])
    
for i in [0, 1, 2] :
    print(my_list[3 - i], my_list[2 - i])

일반적인 형태로 코드를 수정하면 아래와 같습니다.

for i in range(len(my_list) - 1, 0, -1):
    print(my_list[i], my_list[i-1])

인덱스를 만들어내는 방법에 따라 답은 여러개가 될 수 있습니다.

for i in range(len(my_list) - 1):
    print(my_list[len(my_list) - 1 - i], my_list[len(my_list) - 2 - i])

전 문제와 같이 인덱스를 활용하여 결과값을 출력하는 문제입니다.
728x90
반응형