[ Python 코딩 연습 ] 리스트 연습문제

* 다음은 리스트 data에 관련된 문제이다. 물음에 답하시오. (1번~5번 문제)

  data = [-12, 3, -9, 5, 8, -2, 0, -8, 3, 10]

Q1. for문을 이용하여 data의 요소들 중에서 가장 큰 수를 찾는 프로그램을 작성하시오.

👉 실행 결과
가장 큰 수 : 10
✍ 문제 풀이
for i in data:
    if i == max(data):
        print('가장 큰 수 :', i)

Q2. while문을 이용하여 짝수 번째 요소들의 합과 평균을 구하는 프로그램을 작성하시오.

👉 실행 결과
합계 : 8, 평균 : 1.60
✍ 문제 풀이
i = 0
result = 0

while i < len(data):
    if i % 2 == 1:  # 인덱스는 0부터 시작하므로, 리스트의 짝수번째 요소 = 인덱스의 홀수번째 요소
        result += data[i]
        
    i += 1
    
avg = result / (len(data) / 2) # 짝수번째 요소이므로 개수가 반으로 줄어든다.

print('합계 : %d, 평균 : %.2f' % (result, avg))

Q3. 리스트의 메소드를 이용하여 data를 내림차순으로 정렬하는 프로그램을 작성하시오.

👉 실행 결과
10 8 5 3 3 0 -2 -8 -9 -12
✍ 문제 풀이
data.sort(reverse = True)  # 내림차순 정렬: sort 메소드의 revers=True 옵션
print(data)

Q4. data의 4번째 요소에 데이터 100을 추가하는 프로그램을 작성하시오.

👉 실행 결과
-12 3 -9 100 5 8 -2 0 -8 3 10
✍ 문제 풀이
# 특정 위치에 요소 추가하는 메소드 : .insert(인덱스, 삽입 요소)
data.insert(3, 100)  # 리스트의 4번째 요소 = 인덱스 3
print(data)

Q5. data에서 -12의 값을 가진 요소를 삭제하는 프로그램을 작성하시오.

👉 실행 결과
3 -9 5 8 -2 0 -8 3 10
✍ 문제 풀이
# 특정 값을 가진 요소 삭제하는 메소드 : .remove(요소의 값)
data.remove(-12)
print(data)



* 9x9의 미니 바둑판에 돌이 놓여 있는 정보를 저장한 2차원 리스트 stone은 다음과 같다.
  물음에 답하시오. (6번~9번 문제)

  stone = [[0, 0, 0, 0, 0, 0, 0, 0, 0], \
           [0, 1, 0, 1, 2, 1, 2, 1, 0], \
           [0, 2, 1, 1, 1, 2, 2, 0, 0], \
           [0, 0, 2, 2, 2, 1, 0, 2, 0], \
           [0, 0, 0, 0, 0, 1, 0, 2, 1], \
           [0, 0, 0, 2, 0, 1, 2, 1, 0], \
           [0, 0, 0, 2, 1, 0, 1, 1, 0], \
           [0, 0, 0, 1, 1, 0, 0, 0, 0], \
           [0, 0, 0, 0, 2, 2, 2, 0, 0]]
           
* 리스트 요소의 숫자는 다음을 의미한다.
  - 0 : 돌 없음
  - 1 : 흑돌
  - 2 : 백돌

Q6. 흑돌과 백돌의 개수를 카운트하는 프로그램을 작성하시오.

👉 실행 결과
흑돌의 개수 : 17
백돌의 개수 : 16
✍ 문제 풀이
# 흑돌과 백돌 count 하기 위해 초기값 설정
black = 0
white = 0

for i in range(len(stone)):
    for j in range(len(stone[i])):  # 이중 for문을 활용하여 2차원 리스트의 요소에 접근
        if stone[i][j] == 1:
            black += 1
            
        elif stone[i][j] == 2:
            white += 1
            
print('흑돌의 개수 :', black)
print('백돌의 개수 :', white)

Q7. 실행 결과와 같이 흑돌(●), 백돌(○), 돌이 없는 곳(X)을 표시하는 프로그램을 작성하시오.

👉 실행 결과
X X X X X X X X X
X ● X ● ○ ● ○ ● X
X ○ ● ● ● ○ ○ X X
X X ○ ○ ○ ● X ○ X
X X X X X ● X ○ ●
X X X ○ X ● ○ ● X
X X X ○ ● X ● ● X
X X X ● ● X X X X
X X X X ○ ○ ○ X X
✍ 문제 풀이
for i in range(len(stone)):
    for j in range(len(stone[i])):
        if stone[i][j] == 1:
            print('●', end=' ')  # 각 요소에는 end=' '를 통해 한 칸씩 띄어쓰기 하기
            
        elif stone[i][j] == 2:
            print('○', end=' ')
            
        else:
            print('X', end=' ')
            
    print()  # 2차원 리스트의 요소별로 돌을 구분하고 다음 리스트로 넘어갈 때는 아랫줄로 내려가야하므로 print() 수행

Q8. 7번 문제의 결과에 추가로 실행 결과에서와 같이 바둑판의 좌측과 상단에 좌표 값을 삽입하는 프로그램을 작성하시오.

👉 실행 결과
  1 2 3 4 5 6 7 8 9
1 X X X X X X X X X
2 X ● X ● ○ ● ○ ● X
3 X ○ ● ● ● ○ ○ X X
4 X X ○ ○ ○ ● X ○ X
5 X X X X X ● X ○ ●
6 X X X ○ X ● ○ ● X
7 X X X ○ ● X ● ● X
8 X X X ● ● X X X X
9 X X X X ○ ○ ○ X X
✍ 문제 풀이
print(' ', end=' ')  # X축 표시하기 전, 공백 한 칸

for z in range(len(stone)):  # X축 좌표값 표시
    print(z+1, end=' ')
print()

for i in range(len(stone)):
    print(i+1, end=' ')      # Y축 좌표값 표시
    
    for j in range(len(stone[i])):
        if stone[i][j] == 1:
            print('●', end=' ')
            
        elif stone[i][j] == 2:
            print('○', end=' ')
            
        else:
            print('X', end=' ')
            
    print()

Q9. 완성된 8번의 프로그램을 수정하여 키보드로 X와 Y의 좌표 값을 입력받아 흑돌, 백돌, 돌없음을 출력하는 프로그램을 작성하시오.

👉 실행 결과
X축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : 9
Y축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : 5
흑돌
X축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : 7
Y축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : 2
백돌
X축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : 4
Y축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : 1
돌없음
X축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : -1
종료되었습니다!
✍ 문제 풀이
while True:
    x = int(input('X축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : '))
    if x == -1:
        print('종료되었습니다!')
        break  # x축이 -1이면 y축 입력 받지 않고 바로 break
    
    y = int(input('Y축 좌표값을 입력하세요(1~9, 종료시 -1 입력) : '))  # x축이 -1이 아닌 경우
    if y == -1:
        print('종료되었습니다!')
        break
        
    else:  # x축과 y축이 모두 -1이 아닌 경우
        if stone[y-1][x-1] == 1:  # y축=i, x축=j 에 해당함
            print('흑돌')
            
        elif stone[y-1][x-1] == 2:  # 인덱스 0부터 시작하고, 리스트 요소는 1부터 시작하니까 -1 해줌
            print('백돌')
            
        else:
            print('돌없음')

좋은 웹페이지 즐겨찾기