반응형

 

요즘 너무 유튜브 쇼츠에 빠져있는 것 같아, "인간 실격"이라는 책을 읽었다.  출퇴근 시간에 틈틈히 읽었고, 완독 까지 두 달 정도 걸렸다.

 

책의 구조가 독특하다. 서문, 1~3번 째 수기, 후기 이렇게 목차가 구성되있는데 요조라는 남자가 본인의 일생을 일기처럼 기록한 것이 수기 부분이고, 서문과 후기는 요조의 이야기를 전하는 작가의 시점으로 되있다. 후기에서 작가는 요조의 사진과 노트를 받는 내용이 나온다.

결국 이 책은 주인공 요조라는 불행해 보일 수 있는 남자의 인생을 조망한다. 

 

“혼자만 아주 별난 사람인 듯 느껴져 불안과 공포에 바들바들 떨 뿐입니다. 저는 주위사람과 대화를 거의 나누지 못합니다. 그래서 생각해낸 묘안이 광대였습니다.”

 

유복하게 태어났고, 자기가 다른 사람과는 다름을 깨달은 요조가 남들과 섞이기 위해 어쩔 수 없이 광대 노릇을 하는 것이, 회사에서 일도 잘하고 전문적가이기 위해 애써 노력하는 나와 닮았다. 

 

 

“세상이란 개인이 아닐까 하는 흡사 사상같은 것을 터득하게 되었습니다.’”

 

세상은 다수의 인간일까? 세상의 실체가 있는걸까? 사실 세상은 너일 수 있고 , 나일 수 있다. 

 

 

 

그리고 요조는 아버지의 기대에 만족하기 위해 살아가는 것이 싫었어도, 결국 아버지의 경제적 도움 없이는 아무것도 할 수 없다는 것을 안다.  자기모순이다. 

 

 

“남부끄러운 적이 많은 일생이었습니다.”
“알코올 중독일지도 모르겠습니다. 지금도 마시고 싶거든요”
“죽고 싶다. 차라리 죽고싶다. 이제는 돌이킬 수 없다. 거듭 부끄러움을 당할 뿐이다.” 

 

 

 책을 읽는 내내 마음속으로 “술좀 그만 마셔!!”를 속으로 외치던 난 그렇게 폐인이 되어가면서 ‘인간, 실격’의 모습으로 변해가는 요조를 보고 안타까운 한숨을 내쉬고 멈췄다. 나도 그랬었으니까. (20대에  술과 담배, 온갖 게임 중독에 빠져 살았던 시절을 떠올렸다.) 나도 가끔은 일이 제대로 풀리지 않을 때 자기혐오까지는 아니지만 내 자신을 질책한다. 

 

“누군가의 권유를 거부한 적은 제 인생에서 그때 단 한번뿐이었다고 해도 과언이 아닙니다. 저의 불행은 거부하는 능력이 없는 자의 불행이었습니다.”…..”저는 어쩌면 그 순간, 이미 중독에서 벗어난 게 아니었을까요.”

 

이래서 자존감이 중요한걸까? 

그리고 요조가 호리키와의 만남에서도 술, 담배, 매춘부, 좌익 사상 중에 그 어떤 것이라도 거부했다면 지금과 다른 인생을 살지 않았을까? 그런 상상을 해본다.

 

 

마지막으로 인상 깊은 책의 구절도 하나 남기면서 끝낸다. 

신뢰하기 때문에, 사람을 의심하는 법을 몰랐기 때문에 일어난 비극 때문에 요조는 이렇게 얘기한다.

 

신에게 묻습니다. 신뢰는 죄입니까?  
 

 
 
반응형
반응형

 

1.문제 소개

 

 

2.코드

def set_test_case():
    input_str = input().split(" ")
    n,m = int(input_str[0]),int(input_str[1])
    rectangle = []
    for i in range(n):
        row = input()
        rectangle.append(row)

    return n,m,rectangle

def get_max_area(rectangle,x,y):
    distance= 0
    max_area = 0
    while (x+distance) < len(rectangle) and (y+distance) < len(rectangle[0]):
        if (rectangle[x][y] == rectangle[x+distance][y] == rectangle[x][y+distance] == rectangle[x+distance][y+distance]):
            max_area = distance
        distance +=1
    return max_area+1

def solution():
    n,m,rectangle = set_test_case()
    answer = 0
    for i in range(n):
        for j in range(m):
            max_area = get_max_area(rectangle,i,j)
            if max_area > answer:
                answer = max_area

    print(answer*answer)



if __name__ == "__main__":
    solution()
 

 

 

3.코멘트

  • get_max_area(사각형의 p1 / 왼쪽 상단 꼭지점 좌표를 기준으로 p2, p3, p4 가 같은 최대 거리를 반환하는 함수)를 모든 지점을 순회하면서 최대 길이를 구한다.
  • 퇴근하고 짧은 시간에 풀만한 제일 만만한게 그리디/구현 문제.. 오늘은 일이 잘 안풀리는 날이였다.

반응형
반응형

파이썬에서도 객체지향 프로그래밍(OOP) 의 중요성과 코딩 습관을 강조하곤 합니다.

클래스 내에 메소드를 구현할 때 파이썬에서는 3가지 유형을 제공합니다.

class method, intance method, static method 인데요.

 

아래 3가지 유형을 정리해봅니다.

 

- class method
    - 클래스에 바인딩되는 함수
    - 클래스의 상태를 수정하여 모든 인스턴스에 적용될 수 있는 함수
- instance method
    - self 를 첫 번째 인자로 받는 메소드
    - 클래스의 인스턴스를 “암시적”으로 입력받아 클래스 속성과 상호 작용할 수 있습니다.
    - 인스턴스 내  데이터를 액세스 할 수 있고, 수정할 수 있습니다.
- static method
    - 데코레이터를 이용해 정의합니다. 
    - 클래스의 인스턴스가 아닌 클래스에 속합니다.
    - 특정 클래스의 컨텍스트 내에서 의미가 있는  함수를 만들 때 정의합니다.

 

 

이중에서 class method 를 유틸리티 성 함수를 구현할 때 사용하면 좋은데요. 아래 예를 들어보겠습니다.

import pandas as pd
class DataETLProcessor:
    def __init__(self,data):
        self.data =data

    def process_etl(self):
        #write etl process logic code
        pass

    def from_csv_by_instance_method(self,filepath):
        self.data = pd.read_csv(filepath)

    @classmethod
    def from_csv_by_class_method(cls,filepath):
        data = pd.read_csv(filepath)
        return cls(data)

    @classmethod
    def from_json(cls,filepath):
        data = pd.read_json(filepath)
        return cls(data)
    
# case 1 실행 예제)
etl = DataETLProcessor()
etl.from_csv_by_instance_method("./sample_data.csv")
etl.process_etl()

# case 2실행 예제)
etl = DataETLProcessor.from_csv_by_class_method("./sample_data.csv")
etl.process_etl()

 

 

case 1는 instance method 를 이용한 호출이고, case2 는 class method 를 이용한 호출인데, 한 줄 줄었지만 더 간결해졌어요.

그리고 instance 와 class 관련된 변수와 기능, 로직을 분리하면 코드가 깔끔해집니다. 위에서 from_json , from_parquet 그리고 아예 파경로에서 파일 타입을 읽어 포맷별로 데이터를 읽을 수 있도록 구현할 수도 있구요.

 

프로그램의 볼륨이 커질수 있다면 유지보수 용이하게 저렇게 분리해서 구현하는 습관을 들여도 좋겠습니다.

 

물론 간단한 프로그램이라면 그냥 편한대로 구현하는게 더 좋을 수 있습니다.

반응형

+ Recent posts