관리 메뉴

솜씨좋은장씨

[BaekJoon] 2566번 : 최댓값 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 2566번 : 최댓값 (Python)

솜씨좋은장씨 2022. 1. 3. 02:11
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 2566번 최댓값! 입니다.

 

2566번: 최댓값

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

www.acmicpc.net

 👨🏻‍💻 문제 풀이

위와 같이 9X9 격자판에 쓰여진 글자를 입력 받으면

그 중에 가장 큰 숫자는 무엇인지 해당 숫자의 위치는 몇 행 몇 열 인지 구하는 문제입니다.

예제 입력을 보면 공백을 기준으로 적힌 숫자 목록을 9번에 걸쳐 입력 받습니다.

for _ in range(9):
    numbers = list(map(int, input().split()))
    number_list.append(numbers)

이를 코드로 작성하면 위와 같습니다.

max_num_list = []
for row, numbers in enumerate(number_list, start=1):
    max_num = max(numbers)
    col = numbers.index(max_num) + 1

    max_num_list.append((f"{row} {col}", max_num))

그 다음으로는 각 행마다 숫자 목록을 꺼내오는데 이때 몇 행(row)의 숫자인지 알기 위해

enumerate를 활용하여 행의 숫자를 가져오도록 했고 이때 1부터 시작하기 위해 start=1을 옵션을 넣어주었습니다.

 

이렇게 꺼내온 숫자목록에서 max를 활용하여 최댓값을 찾고

해당 숫자가 어디에 위치해 있는지 index를 활용하여 구한 값에 1을 더해 구합니다.

 

이렇게 구한 값들을 max_num_list에 (행 열, 각 행의 최댓값) 의 형태로 넣어둡니다.

max(max_num_list, key=lambda x: x[1])

마지막으로 max를 활용하여 각 행들의 최댓값 들 중 가장 큰 수를 찾아 정답으로 합니다.

 

전체 코드는 아래를 참고해주세요!

👨🏻‍💻 코드 ( Solution )

def max_number(number_list):
    max_num_list = []
    for row, numbers in enumerate(number_list, start=1):
        max_num = max(numbers)
        col = numbers.index(max_num) + 1

        max_num_list.append((f"{row} {col}", max_num))
            
    return max(max_num_list, key=lambda x: x[1])

if __name__ == "__main__":
    number_list = []
    
    for _ in range(9):
        numbers = list(map(int, input().split()))
        number_list.append(numbers)
        
    answer = max_number(number_list)
    
    print(answer[1])
    print(answer[0])
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

 

Comments