baekjoon 2566

윤동환·2023년 1월 7일
0

Algorithm

목록 보기
29/54
post-thumbnail

최댓값

내가 작성한 코드

from dataclasses import dataclass
@dataclass
class MaxNum:
    x: int = 0
    y: int = 0
    max: int = 0
N = []
MN = MaxNum()
for a in range(9):
    N.append(list(map(int, input().split())))
for n in range(len(N)):
    for a in range(len(N[n])):
        if MN.max <= N[a][n]:
            MN.x = n + 1
            MN.y = a + 1
            MN.max = N[a][n]
print(MN.max)
print(MN.y, MN.x)

문제를 풀며 고민한 사항

  • 최댓값과, x, y는 하나의 정보를 가리키는 값으로 사용되는데 한번에 c의 구조체처럼 쓰고싶었다.
    기존에 파이썬은 구조체가 없고, 클래스 또한 데이터 타입을 지정할 수 없어 네임드 튜플을 사용했었다.

      from collections import namedtuple
    
      MyStruct = namedtuple("MyStruct", "field1 field2 field3")
    
      m = MyStruct("foo", "bar", "baz")

하지만 파이썬 3.7부터 dataclass를 지원하여 @dataclass 데코레이션으로 타입 힌트와 함께 class를 구조체 형태로 정의할 수 있다

  from dataclasses import dataclass
  @dataclass
  class MaxNum:
      x: int = 0
      y: int = 0
      max: int = 0
  • 정해진 9에서 9까지의 범위를 하드하게 for문의 조건문으로 넣기보다 array의 길이를 동적으로 확인하여 다양한 크기의 배열에 적용시킬 수 있도록 구현하였다.

결과

profile
모르면 공부하고 알게되면 공유하는 개발자

0개의 댓글