문제 5*3 개의 전구를 통해 0~9까지의 숫자를 표현할 수 있을 때, 전구가 망가졌을 수도 있음을 가정하고, 켜진 전구들을 살펴보아 만들 수 있는 숫자들의 평균을 구하는 문제이다. 층 안내판의 크기는 5*3 판을 여러 개 이어 붙인 형태이며 판 사이의 꺼진 전구가 존재한다. 풀이 먼저 문제에서 주어진 0~9까지의 표현을 가지고 5*3 판 위의 어떤 전구가 켜졌을 때 어떤 숫자를 만들 수 있는지 판별해야 한다. 예를 들어 5*3 판을 기준으로 (0,0) 위치의 전구가 켜지면 만들 수 있는 숫자들(0,2,3,4,5,6,7,8,9)을 저장한다. 같은 간격으로 숫자가 있기에 (i, j+k*4)를 통해 동일한 위치의 전구들을 확인할 수 있다. 각각의 판이 만들 수 있는 숫자들을 추출한다. 만약 (3,0) 위치의..
문제 초기 유성 위치 정보가 주어졌을 때, 한 덩어리의 유성이 땅위에 떨어졌을 때의 모습을 출력하는 문제이다. 유성은 "X", 땅은 "#", 공기는 "."으로 주어진다.. 유성은 가장 위에 존재하며, 맨 밑 줄은 모두 땅이다. 그리고 땅 위에 공기층이 적어도 1칸 존재한다. 유성은 수직으로 낙하하며, 유성과 땅의 원형은 변하지 않는다. 풀이 열 별로 유성과 땅 사이의 거리의 최솟값을 구하고 해당 거리만큼 유성만 이동시킨 모습을 출력해야한다. 열 별로 유성과 땅의 거리는 상단(0)에서부터 가장 먼 유성(meteor)과 가장 가까운 땅(i) 사이의 거리이다. 모든 열을 탐색하면서 유성(X)이 나타났을 땐 meteor 값을 업데이트하고, 최초로 땅을 만났을 때 meteor값과 i값 사이의 거리를 도출하여 (i..
문제 로봇 청소기의 위치와 방향 정보, 방의 상태 정보가 주어졌을 때, 작동을 멈출 때까지 로봇 청소기가 청소하는 영역의 개수를 구하는 문제이다. 방은 n*m 크기이며, 가장 북서쪽 칸의 좌표가 (0,0), 남동쪽 칸의 좌표는 (n-1, m-1)이다. (i, j)가 0인 경우 청소되지 않은 칸이며, 1인 경우는 벽을 의미한다. 로봇청소기의 작동법은 다음과 같다. 현재 칸이 청소가 안되어 있다면 청소한다. 주변 4칸 모두 깨끗한 경우, 바라보는 방향을 유지한 채 한 칸 후진하고 1번으로 돌아간다. 만약 뒤쪽이 벽이라면 작동을 멈춘다. 주변 4칸 중 청소되지 않은 칸이 있는 경우, 반시계 방향으로 90도 회전한다. 바라보는 방향을 기준으로 앞쪽이 청소되지 않은 칸이라면 앞으로 한 칸 이동한다. 1번으로 돌아..
Embedding Transformer에서 사용되는 Embedding은 Input Embedding과 Output Embedding이 있으며, 이들과 더해지는 Positional Encoding이 있다. Input과 Output Embedding은 torch에서 제공하는 nn.Embedding을 사용하였으며, Positional Encoding은 논문에서 제시하는 수식을 따라 Positional Encoding class를 구현하였다. 1. Positional Encoding Positional Encoding은 시퀀스의 순서 (단어의 위치 정보) 를 알려주는 역할을 한다. Input과 Output Embedding이 입력될 때 Positional Encoding 정보가 더해져 Encoder와 Decod..