프로그래밍/파이썬 python

단계별로 풀어보기 7 - 2차원 배열(2)

idealtrue 2023. 8. 6. 23:13
728x90

문제번호 2566번 최댓값

 

첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 입력된다. 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행과 열을 빈칸을 사이에 두고 차례로 출력해야 한다. 최댓값이 두 개 이상인 경우 그중 한 곳의 위치를 출력한다.

 

답안 :

1  import sys
2  num = []
3  max_num = 0
4  max_num_row = 0 #행
5  max_num_column = 0 #열
6  for i in range(9) :
7      num.append(list(map(int,sys.stdin.readline().split())))
8  for row in range(9) :
9      for column in range(9) :
10         num_now = num[row][column]
11         if num_now >= max_num :
12             max_num = num_now
13             max_num_row = row+1
14             max_num_column = column+1
15 print(max_num)
16 print(max_num_row,max_num_column)

 

comment :

# 행렬을 표준입력받기 위해 sys모듈을 가져오고, 입력을 받기 위하여 빈리스트인 변수를 설정한다.

# 마지막에 출력을 위해서 최댓값과 최댓값의 행과 열에 대한 변수를 설정해준다.

# 9x9 이므로 9행으로 입력을 받아준다.

# 행과 열에 대한 숫자를 하나씩 불러와서 지금까지 검사한 값들 중 최댓값인 값과 비교를 한다.

# 만약 현재 불러온 숫자가 최댓값보다 크면 현재의 숫자로 최댓값과 그에 대한 행렬을 교체하고 아니면 넘어간다.

# 마지막으로 원하는 대로 출력해준다.

 

----------------------------------------------------------

 

문제번호 10798번 세로읽기

 

총 다섯 줄이 입력된다. 각 줄에는 1~15개의 글자들이 빈칸 없이 연속으로 입력된다. 입력글자는 영어 대소문자와 숫자 0부터 9이다. 세로로 읽은 순서대로 글자들을 출력해야 한다.

 

답안 :

1  letter = [list(input().strip()) for _ in range(5)]
2  for x in range(5):
3      while len(letter[x]) < 15:
4          letter[x].append(' ')
5  for row in range(15):
6      for column in range(5):
7          print(letter[column][row].strip(), end='')

 

comment :

# 각 리스트를 입력받는다.

# 리스트의 최대 길이가 15이므로 15가 되지 않으면 해당 리스트의 길이를 15가 될 때까지 공백(' ')으로 만드는 반복문을 설정한다.

# 행렬을 뒤집어서 출력하는데, 빈칸이 있으면 붙이고, end=''를 넣어 연속으로 출력되는 값들 또한 붙인다.

# 본래 생각했던 코드는 백준 시간초과가 걸렸으나 아래에 첨부하였다. 이 코드는 공백 대신 '\n'을 넣는 식으로 하였다. '\n'이 값으로 나올 경우에는 붙이는 코드를 작성하였다.

import sys
letter = []
for i in range(5) :
    letter.append(list(sys.stdin.readline()))
for x in range(5) :
    while len(letter[x]) != 15 :
        letter[x].append('\n')
for row in range(15) :
    for column in range(5) :
        if letter[column][row] != '\n' :
            print(letter[column][row], sep='', end='')
        else:
            print('', end='')

 

728x90