Python
14502_연구소
https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 벽을 세운 후에 미로를 풀면 된다. 바이러스를 퍼뜨리는것을 함수로 만들어서 dfs로 구현하였다. 그후 바이러스가 있다면 주위로 퍼져나가게끔 2차원 배열 전체에서 dfs를 한번씩 실행한 후에, 나온 보드에서 0의 개수를 세주며 업데이트를 해준다. 벽을 3개 세워줘야 하는데, 중요한건 꼭 3개가 채워져야 한다는 것 즉, 전체 배열 중에서 3개를 순열로 뽑아내서 m으로 나눈후 몫을 x좌표, 나머지를 y좌표로 삼아 ..
14499_주사위굴리기
https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 문제를 처음보면 주사위의 전개도가 그려지는데, 이를 활용해서 풀었다. 먼저 전개도의 가로,세로를 저장해주었다. 2 4 1 3 5 6 문제처럼 위와같은 전개도가 있다면 4,1,3 2,1,5,6 을 큐로 저장해주었다. 두 배열을 dice_r,dice_c라고 생각해보자. 만약 위,아래로 움직인다면 단순히 2,1,5,6 의 앞이나 뒤를 떼..
3190_뱀
https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 뱀이 사과를 먹고 길어져서 벽에 부딪히거나 하면 끝나는 게임이다. 다들 한번쯤 해본 적 있을 것이다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. 문제에서 해당 멘트를 제공해 주는데 정말 코드로 구..
Minist 데이터 활용 0,1,2 구분 인공지능 직접구현
이번에는 Mnist 데이터들을 활용해서 직접 0,1,2를 구분하는 인공지능을 만들어보았다. 이를 확장해서 구현한다면 0~9까지 구분하는 인공지능을 라이브러리 없이 직접 만들어보는 것이 가능할 것이다. 이전 신경망까지 잘 따라왔다면 오히려 쉽다! 입력 후보군 5개와 0,1,2로 된 출력 후보군 3개를 넣어주기만 하면 된다. 먼저 흐름도를 통해 전체적인 흐름을 파악해보자. 우선 일반적인 Minist 를 받아오는것이 아닌 기존에 했던것처럼 엑셀형식으로 가공된 파일이 있다. 이들을 활용해서 구현할 것이다. 출력은 0,1,2로 나오기 때문에 ONE-HOT-ENCODIG을 거친다면 100, 010, 001 3가지의 출력 후보군이 나올것이다. 그렇다면 입력 후보군들은 어떻게 선택해야 할까? (1) 가로축 Projec..
12100_2048(easy)
https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 2048을 구현하면 되는 문제이다. 결국 5번의 전체탐색을 해야하는데 이는 dfs를 사용했다. 그리고 위,오른쪽,아래,왼쪽으로 이동시킬때 문제를 쪼개서 생각해 보았다. 해당 부분을 위로 올리는 과정을 생각해보자. 4개의 세로줄이 있는데 이를 왼쪽부터 차례대로 하나씩 올리는 방향으로 계산을 할 것이다. 우선 왼쪽 상단부터 2,2,2를 순서대로 빼서 큐에 넣는다고 생각해보..
13460_구슬탈출 2
https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 삼성역량 테스트 문제였다고 한다. 예시에 있을법한 반례들이 거의 다 주어져서 그런지 시간은 조금 걸렸지만 도움을 안받고 스스로 푸는데에는 성공했다. 문제를 접근하는 것은 간단했는데 꼼꼼하게 체크하는것이 중요했다. 전체적인 흐름은 아래와 같다. 1. R,B,O의 좌표를 처음 가지고 시작 2. 큐를 활용하여 bfs 탐색 (상하좌우) 3. B가 O위치에..