50명의 사람들의 일상이 맞추어진 퍼즐처럼 엮여있는 책이다. 읽으면서 내 주변 사람들의 생각도 많이하게 되었는데,

내 가족, 친구, 회사 동료들은 나와 함께하지 않는 순간들에는 어떤 이야기로 살아가고 있을지도 상상하게 되었다.

사실 우리는 나를 중심으로 생활하고 생각하지, 내가 아닌 근처에 있는 타인의 삶을 이야기를 상상하기는 어렵고, 그럴 동기조차 없기 때문이다.

 

이호

슈크림 선생님이라 불리는 이호 할아버지는 내가 닮아가고 싶은 모습을 하고 있었다.

 '지금껏 너무 많이 가졌으니 잃어도 좋다'

비로소 스스로에 대한 만족과 행복을 느끼고 있는 사람이 할 수 있는 말이지 않을까 생각한다.

의사가 되고싶은 아이에게 운을 나누어주겠다며 악수를 청하는 할아버지,

나 또한 그런 여유를 가지고 살기위해 노력 해야겠다.

 

진선미

문영린 에피소드에서 진선미는 새엄마로서 등장한다.

또, 누군가의 아내로서 등장하며,

누군가의 고객이자, 함께 일하게 될 비즈니스 관계로 등장하게 된다.

사실 진선미라는 존재를 알게 되며, 이 사람에 대해 내가 기억을 못하는 것인지,

이 사람을 자세히 알아보기 위해(?) 책의 차례를 다시 되짚어보고 이름을 꼼꼼히 어디있는지 살펴보았지만 놀랍게도 꽤나 여러 이야기에 등장하는 것 치고는 본인의 에피소드가 수록되지 않는 인물이었다.

아마 진선미는 T일 것이고, 자유분방하며 나이스한 성격이다. 누구에게도 자신의 생각을 잘 전달할 수 있는 사람이고 자신의 단단한 가치관 아래 자유롭게 세상을 살아가는 진선미라는 인물은 굉장히 즐거워보인다. 지향하고싶은 삶을 가졌다고 해야할지..

특히 새엄마로서 매우 이성적인 어조로 조언하는 이야기는 나도 뜨끔하게 만들었다. ㅎㅎ

"마음은 내가 어떻게 해줄 수 있는 문제가 아니고 네가 크면서 해결해야겠지만, 몸무게 때문에 더 힘들면 그건 지금 해결해보자. 돈으로 못 빼는 살이 어딨니?"

 

이 책은 어 이사람 아는 사람인데..? 하고 그 사람이 다시 궁금해져 다시 책의 이곳저곳을 넘겨보게 만든다. 액자식 구성을 독자에게 맡긴 책 같다고해야 하는지 모르겠다. 개성있고 재미있게 읽고, 이러한 이유로 읽는데 참 오랜 시간이 들은 책이다. 인상깊었다! :)

 

 

그리고... 인물간의 관계도를 그려야 겠다고 생각을 하기도하였는데

똑똑한 독자들이 이미 만들어놓았다...

'독서' 카테고리의 다른 글

[독서] 나는 매주 시체를 보러 간다  (0) 2024.04.01
쇼코의 미소  (0) 2024.03.25

 

<그것이 알고싶다> 애청자이기도 한 나는 이 책의 저자가 법의학 분야에서 매우 저명한 사람인걸 알고 있었다. <그것이 알고싶다>에 출연하는 유성호 교수는 의학적인 측면에서 사인을 분석하고 시체에서 말해주는 이야기를 우리에게 전해주는 역할을 한다.

이 책은 일종의 어떠한 죽음을 맞이할 것인지 나의 죽음을 어떻게 준비할 것인지에 대한 고민거리를 던져준다. 대부분의 사람들은 죽음에 대한 준비 없이, 사회가 마련해둔 틀 안에서 맞이하게 된다. 50%를 초과하는 사람들이 본인의 집에서 죽기를 희망하지만, 대부분의 경우 별 준비없이 병원에서 의사가 생명연장을 시도하거나, 약물투여를 통해 연명하다가 죽게된다. 이게 정말로 우리가 바라는 죽음의 모습일까?

나는 지금까지 태어난 이후로 나의 죽는 과저에 대해서 진지하게 생각해본 적이 없다. 그 이유는 아마 죽음이라는 것 자체가 부정적이고, 회피하기 싫은, 거부감이 드는 단어라는 이유 때문일 것이다. 그러나 죽음은 사람으로 태어났으면 절대적으로 경험해야 할 피할 수 없는 것이다.

저자는 가족들에게 미리 자신의 장례가 어떻게 이루어졌으면 좋겠는지, 재산이나 금전적인 것은 어떻게 처리해야 할지 디테일하게 전달될수록 준비하는 가족들의 입장에서도 부담이 없고 좋다고 한다. 전혀 생각지도 못한 부분들이었기에 읽으면서 당황스러웠다. 내가 뇌사 상태에 빠진다면, 나는 그럼에도 불구하고 생명을 유지하기를 원할까...? 아마도 아닐 것 같다. 뇌가 죽었는데, 몸에 에너지만 공급해준들 그게 과연 나는 살아있다고 볼 수 있는걸까. 이러한 문제는 이를 결정할 가족들에게도 굉장히 부담스러운 딜레마로 다가올 것 같다는 생각이 들었다. 가족들의 선택에 따라 죽음이 결정되는 것은 너무 괴로운일 일테니까

책을 읽으며 죽음에 대한 여러가지 사회적 문제에 대해서도 깨닫게 되었다. 사람은 언제부터 사람으로서 인정받는 걸까? 엄마의 배속에서 나오는 순간? 수정란이 착상하는 순간? 이 밖에도 줄기세포에 대한 과학연구 분야의 윤리적 논쟁들.. 그뿐만이 아니다, 본인이 스스로 죽는 행동에 대해 어떠한 시각으로 판단해야 할지에 대한 것도 매우 심각한 이슈다. 내가 말하는 스스로 죽는 행동이란 치료를 해서 더 이상 의미있는 개선이 없을 것이라 판단 될 때 환자들이 본인의 운명을 선택하거나, 질병이 아니더라도 스스로의 환경에 대해 비관하고 죽는 행동을 의미한다.

미성숙한 생각이었다면, '본인의 선택인데 왜 문제인 걸까?'라고 되물었을지도 모른다. 그러나 책에서 설명한 사례와 연구에 따르면, 투신으로써 스스로 죽는 행동을 선택하였다가 살아난 사람의 인터뷰 내용으로 "그 순간, 나는 죽고 싶지 않았다"라고 말했으며, 고통받는 환자들이 안락사를 위해충분한 의사의 정신적 상담 및 동의를 구하고 스스로 죽는 행동을 위한 버튼을 제공했을 때, 결국 끝내 버튼을 누르지 못하는 자들은 약 60%가 넘는다고 한다. 사실 모두 죽고 싶어하지 않는다. 스스로 죽는 행동에 대해 우리는 단순히 본인의 선택이니 자유라거나, 종교적 이유로 어떠한 경우에도 절대 허용할 수 없다는 것은 사회적인 관점에서 본다면 지극히 1차원적 의견이며, 분명 그에 따른 부작용을 낳는 방향성일 것이다. 이러한 복잡한 인간의 존엄성, 생명에 대한 윤리적 문제는 국가마다의 국민들의 문화, 인식에 따라 달라지고 시대적 변화에도 민감하게 반응하여 끊임없이 변화한다.

나의 죽음은 어떻게 이루어져야 나의 마지막이 아름다울까, 그리고 만일 안락사가 고려해야 할 정도로 내가 극심히 고통받고 치유불가한 상태라면 어떤 선택을 해야 할까

'독서' 카테고리의 다른 글

피프티피플  (1) 2024.04.28
쇼코의 미소  (0) 2024.03.25

큐를 이용해서 구현하며, 기본적인 BFS 탐색 순서는 다음과 같다.

1. 큐를 하나 만든다

2. 시작할 노드를 넣는다

3. 시작할 노드를 꺼내고 출력한다

4. 인접한 노드를 큐에 넣는다

5. 이 때, 한번 큐에 넣었던 노드는 다시 큐에 넣지 않아야 한다

 

BFS 관련된 문제로 소스코드로 확인해보자

백준 토마토 문제이다.

https://www.acmicpc.net/problem/7569

 

7569번: 토마토

첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100,

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main{
    public static int N, M, H;
    public static int[][][] box;

    public static int[] dx = {1, -1, 0, 0, 0, 0};
    public static int[] dy = {0, 0, 1, -1, 0, 0};
    public static int[] dz = {0, 0, 0, 0, 1, -1};

    public static Queue<Tomato> queue = new LinkedList<Tomato>();

    static class Tomato {
        int x, y, z;

        public Tomato(int x, int y, int z) {
            this.x = x;
            this.y = y;
            this.z = z;
        }

    }

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        M = Integer.parseInt(st.nextToken());
        N = Integer.parseInt(st.nextToken());
        H = Integer.parseInt(st.nextToken()); /** 1번 문제는 변수 H를 1로 주면 해결된다.. */

        box = new int[H][N][M];

        for (int k = 0; k < H; k++) {
            for (int i = 0; i < N; i++) {
                st = new StringTokenizer(br.readLine(), " ");
                for (int j = 0; j < M; j++) {
                    box[k][i][j] = Integer.parseInt(st.nextToken());
                    if(box[k][i][j] == 1){
                        queue.offer(new Tomato(i, j, k));
                    }
                }
            }
        }

        bfs();
    }

    static int isPerfectlyRipe () {
        int max = -10000000;
        for (int k = 0; k < H; k++) {
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < M; j++) {
                    if (box[k][i][j] == 0) {
                        return 0;
                    }
                    max = max > box[k][i][j] ? max : box[k][i][j];
                }
            }
        }
        return max;
    }

    public static void bfs() {

        while (!queue.isEmpty()) {
            Tomato tomato = queue.poll(); // 큐에서 익은 토마토를 하나 꺼내자

            for (int i = 0; i < 6; i++) { // 상하좌우위아래 6개 방향으로 이동했을 때의 각 토마토 확인
                int _x = tomato.x + dx[i];
                int _y = tomato.y + dy[i];
                int _z = tomato.z + dz[i];
                if(0 <= _x && _x < N &&
                        0 <= _y && _y < M &&
                        0 <= _z && _z < H) { // 이동한 장소가 배열의 크기를 벗어나지 않도록 해야한다
                    if (box[_z][_x][_y] == 0) { // 아직 안익었다면 큐에 넣어준다
                        box[_z][_x][_y] = 1; //이제 익었으니까 1로 변환해주어야 다음 탐색을 이어나갈 수 있다
                        queue.add(new Tomato(_x, _y, _z));
                        box[_z][_x][_y] = box[tomato.z][tomato.x][tomato.y] + 1; // 날짜정보를 저장해준다 이 정보는 1부터 시작했으니 결과에서 1을 빼주어야한다
                    }
                }
            }
        }

        System.out.println(isPerfectlyRipe() - 1);

    }
}

 

 

+ Recent posts