Yeon's 개발블로그

지식을 전파하는 개발자가 되고싶습니다.

분류 전체보기 83

[python] BOJ 백준 23290: 마법사 상어와 복제

1. 문제 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그, 비바라기, 블리자드 마법을 할 수 있다. 오늘은 기존에 배운 물복사버그 마법의 상위 마법인 복제를 배웠고, 4 × 4 크기의 격자에서 연습하려고 한다. (r, c)는 격자의 r행 c열을 의미한다. 격자의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은 (4, 4)이다. 격자에는 물고기 M마리가 있다. 각 물고기는 격자의 칸 하나에 들어가 있으며, 이동 방향을 가지고 있다. 이동 방향은 8가지 방향(상하좌우, 대각선) 중 하나이다. 마법사 상어도 연습을 위해 격자에 들어가있다. 상어도 격자의 한 칸에 들어가있다. 둘 이상의 물고기가 같은 칸에 있을 수도 있으며, 마법사 상어와 물고기가 같은 칸에 있을 수도 있다. 상어의 마..

Algorithms/Samsung 2022.03.24

[python] BOJ 백준 23291: 어항정리

1. 문제 마법사 상어는 그동안 배운 마법을 이용해 어항을 정리하려고 한다. 어항은 정육면체 모양이고, 한 변의 길이는 모두 1이다. 상어가 가지고 있는 어항은 N개이고, 가장 처음에 어항은 일렬로 바닥 위에 놓여져 있다. 어항에는 물고기가 한 마리 이상 들어있다. 은 어항 8개가 바닥 위에 놓여있는 상태이며, 칸에 적힌 값은 그 어항에 들어있는 물고기의 수이다. 편의상 어항은 정사각형으로 표현했다. 어항을 한 번 정리하는 과정은 다음과 같이 이루어져 있다. 먼저, 물고기의 수가 가장 적은 어항에 물고기를 한 마리 넣는다. 만약, 그러한 어항이 여러개라면 물고기의 수가 최소인 어항 모두에 한 마리씩 넣는다. 위의 예시의 경우 물고기의 수가 가장 적은 어항에는 물고기가 2마리 있고, 그러한 어항은 2개가 ..

Algorithms/Samsung 2022.03.23

[python] BOJ 백준 14499: 주사위 굴리기

1. 문제 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 2 4 1 3 5 6 주사위는 지도 위에 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태로 놓여져 있으며, 놓여져 있는 곳의 좌표는 (x, y) 이다. 가장 처음에 주사위에는 모든 면에 0이 적혀져 있다. 지도의 각 칸에는 정수가 하나씩 쓰여져 있다. 주사위를 굴렸을 때, 이동한 칸에 쓰여 있는 수가 0이면, 주사위의 바닥면에 쓰여 있는 수가 칸에 복사된다. 0이 아닌 경우에는 칸에 쓰여 있는 수가 주사위의 바닥면으로 복사..

Algorithms/Samsung 2022.02.02

[python] BOJ 백준 13458: 시험감독

1. 문제 총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다. 감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다. 각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다. 각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오. 2. 입력 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주..

Algorithms/Samsung 2022.02.02

[python] BOJ 백준 3190: 뱀

1. 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지..

Algorithms/Samsung 2022.02.01

[python] BOJ 백준 12100: 2048(easy)

1. 문제 2048 게임은 4×4 크기의 보드에서 혼자 즐기는 재미있는 게임이다. 이 링크를 누르면 게임을 해볼 수 있다. 이 게임에서 한 번의 이동은 보드 위에 있는 전체 블록을 상하좌우 네 방향 중 하나로 이동시키는 것이다. 이때, 같은 값을 갖는 두 블록이 충돌하면 두 블록은 하나로 합쳐지게 된다. 한 번의 이동에서 이미 합쳐진 블록은 또 다른 블록과 다시 합쳐질 수 없다. (실제 게임에서는 이동을 한 번 할 때마다 블록이 추가되지만, 이 문제에서 블록이 추가되는 경우는 없다) 이 문제에서 다루는 2048 게임은 보드의 크기가 N×N 이다. 보드의 크기와 보드판의 블록 상태가 주어졌을 때, 최대 5번 이동해서 만들 수 있는 가장 큰 블록의 값을 구하는 프로그램을 작성하시오. 2. 입력 첫 번째 줄에..

Algorithms/Samsung 2022.02.01

[python] BOJ 백준 13460: 구슬탈출2

1. 문제 스타트링크에서 판매하는 어린이용 장난감 중에서 가장 인기가 많은 제품은 구슬 탈출이다. 구슬 탈출은 직사각형 보드에 빨간 구슬과 파란 구슬을 하나씩 넣은 다음, 빨간 구슬을 구멍을 통해 빼내는 게임이다. 보드의 세로 크기는 N, 가로 크기는 M이고, 편의상 1×1크기의 칸으로 나누어져 있다. 가장 바깥 행과 열은 모두 막혀져 있고, 보드에는 구멍이 하나 있다. 빨간 구슬과 파란 구슬의 크기는 보드에서 1×1크기의 칸을 가득 채우는 사이즈이고, 각각 하나씩 들어가 있다. 게임의 목표는 빨간 구슬을 구멍을 통해서 빼내는 것이다. 이때, 파란 구슬이 구멍에 들어가면 안 된다. 이때, 구슬을 손으로 건드릴 수는 없고, 중력을 이용해서 이리 저리 굴려야 한다. 왼쪽으로 기울이기, 오른쪽으로 기울이기, ..

Algorithms/Samsung 2022.01.31

2021년 SKT T-WorX 인턴십 코딩테스트&면접 후기

(2021.06.04) 2021년 SKT T-worX 인턴십 후기입니다. 최종합격을 해서 7~8월 두달동안 인턴을 진행한 후 쓰는 후기입니다. 채용 과정은 1) 자기소개서 2) 라이브 코딩테스트 면접 3) 기술면접 으로 총 3차례를 거치게 되며, 이후 합불이 정해지게 됩니다. 최종합격까지의 채용은 총 2주정도로, 굉장히 스피디하게 이루어진 편입니다. 제가 지원했던 직무는 '자연어 분류 기술 개발' 로 대화 기반 자연어 및 계층적 텍스트 분류에 대한 업무를 하는 곳이었습니다. 필수 자격요건에는 python을 이용한 자연어 데이터 전처리 경험과 Transfomer 등의 NLP 관련 라이브러리 사용경험이 있었어야 했습니다. 자기소개서는 정해진 형식이 존재해서, 양식에 맞춰 준비를 했습니다. 하지만 따로 분량 ..

8. 텍스트 분류

텍스트 분류란 문장을 입력으로 받아 사전에 정의된 클래스 중 어디에 속하는지 분류하는 과정을 말한다. 감정분석, 스팸메일탐지, 사용자 의도분류, 카테고리 분류 등 많은 분야로 응용될 수 있다. 전처리를 하는 과정에서 분류를 하기전에 표제어나 어간을 추출의 여부에 대해 무조건적인 답이 정해져 있는 것은 아니다. 딥러닝의 시대에 접어들면서 차원 축소가 가능해졌기 때문에, 희소성에 관련한 문제는 어느정도 해결되었고, 그에 따라 표제어와 어간추출을 하지 않기 시작했다. 처음에는 일단 추출을 하지 않고, 나중에 코퍼스 양의 부족이 성능저하의 원인이 된다면 그때 추출을 시도해보는 것이 좋다. 1. RNN을 활용한 텍스트 분류 파이토치를 활용하여 코드를 구성하였고, LSTM 내부의 각 계층간에는 드롭아웃이 추가되어있..

NLP 2021.07.23

7. 시퀀셜 모델링

1. RNN (Recurrent Neural Network) 자연어 처리 분야에서 문장내 단어들은 순서에 따라 서로 영향을 주고받기때문에 순서 정보가 굉장히 중요하다. 따라서 순서정보를 사용하여 학습하는 것을 시퀀셜 모델링 (Sequential Modeling)이라고 한다. 순환신경망(RNN)은 입력과 그 직전의 hidden state를 참조하여 다음 hidden state를 결정하기 때문에 시퀀셜 모델링이 가능하다. RNN은 foward와 back-propagation 과정을 거치며 학습한다. 1) 피드포워드 함수 f는 xt와 h t-1를 입력으로 받아서 파라미터 Θ를 통해 h t 를 계산한다. ReLU대신 tanh를 활성화 함수로 사용하고, 최종적으로는 각 time-stamp에 대한 손실 L을 구한 ..

NLP 2021.07.23