일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Algorithm
- Back tracking
- Linked list
- 알고리즘
- django
- SWEA
- programmers
- Bruth Force
- CSV
- 구현
- SQL
- BFS
- Python
- boj
- 알고리듬
- 코딩테스트
- Priority Queue
- hash table
- Vue.js
- GitHub
- Data Structure
- JavaScript
- Trie
- spring boot
- DFS
- gpdb
- 시뮬레이션
- 코테
- 모의SW역량테스트
- aws
- Today
- Total
목록시뮬레이션 (19)
hotamul의 개발 이야기
url: https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 풀이 핵심 1. 기존에는 stack + queue 로 풀이했다면 이번에는 double linked list를 이용해 풀이해보고자 한다. double linked list를 사용하는 이유는 꼬리를 자르는 경우 (꼬리를 잘라야 하는 경우 꼬리의 이전(post)이 꼬리가 되게 하고 꼬리를 잘라야 한다) 때문에 그렇다. 2. SNAKE 구조체와 make, cut_tail 함수를 다음과 같이 만들어 준다..
url: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeW7FakkUDFAVH SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 핵심 1. 높이 차이가 2 이상 나는지 확인해주기, 내리막길 + 오르막길 일 경우 경사로가 중복인지 확인하기 이 두가지만 잘 확인해준다면 쉽게 풀 수 있다. 2. 행/열을 각각 체크해주려면 경사로 중복 배열을 행 체크 후 다시 초기화시켜줘야 하므로 행 체크만 할 수 있도록 입력에서 처리해준다. (따라서 행을 2 * N번 체크해줘야 함) ... scanf("%d", &map[r][c])..
url: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=3549&sca=99 JUNGOL www.jungol.co.kr 기존에 풀었던 백준 문제와 동일한 문제이다. (https://hotamul.tistory.com/18) 기존에는 함수로 단순하게 구현했는데 뭔가 Class 처럼? (실제로 class를 만들어 풀지는 않았지만) 구현하고 싶어 struct ROBOT에 cleaning, left_turn, move, back_move 함수를 넣어 robot의 기능처럼 사용했다. 훨씬 가독성이 좋아진 느낌이다. 코드 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; int R..
url: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=3543 JUNGOL www.jungol.co.kr BOJ 뱀 문제와 거의 같은 문제. (https://hotamul.tistory.com/17) 코드 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; int N, M, D; bool map[100][100]; bool body[100][100]; int DIR[10000]; const int dr[] = { -1,0,1,0 }; const int dc[] = { 0,1,0,-1 }; struct POS { int r, c; }; deque worm; int solve() ..
url: https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 풀이 핵심 1. 완전 탐색 문제 (Bruth Force / Back Tracking) 2. map을 반시계 방향으로 (시계 방향인지 반시계 방향인지는 중요하지 않음) 회전시키는 함수와 위로 이동시키는 함수를 구현한다. (상 하 좌 우로 이동시키는 함수를 각각 구현하기는 번거롭기 때문) 3. 문제에서 가장 중요한 것은 이동시키는 함수를 어떻게 구현하는 것이냐 이..
url: https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 풀이 핵심 1. 구현 / 시뮬레이션 문제 2. 미리 모래 날리는 비율, 왼/아래/오른/위 방향에 따른 모래 이동 위치 배열들을 생성해야 한다. // 토네이도 이동 배열 const int dy[] = { 0,1,0,-1 }; const int dx[] = { -1,0,1,0 }; // 비율 정보를 담고 있는 배열 const int ratio[9] = { 1,..
url: https://www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 풀이 핵심 1. 구현 / 시뮬레이션 문제 2. 상어의 위치, 방향, 우선 순위 방향 정보를 저장하는 shark 배열을 만든다. (배열의 인덱스가 상어의 고유 번호 이다.) 3. 상어가 죽었다는 것은 상어의 방향이 -1일 경우로 한다. M 개의 상어를 탐색하며 상어의 현재 자리에 냄새를 남긴다. 냄새는 smell 배열에 상어의 고유 번호, 현재 ..
url: https://www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 풀이 핵심 1. Bruth Force + 시뮬레이션 / 구현 문제 2. shark라는 struct를 만들어 문제를 해결한다. shark struct는 다음과 같은 변수, 함수로 구성된다. 현재 상어의 위치 (R, C), 방향 (D), 먹은 물고기 번호의 합 (cnt) 물고기의 ID를 저장하는 map[4][4] 배열 물고기의 위치, 방향, ID를 저장하는 fish 배열 (..
url: https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net na982님 풀이 참고 https://na982.tistory.com/131 [삼성 SW 역량 테스트] 컨베이어 벨트 위의 로봇 컨베이어 벨트 위의 로봇 강의 컨베이어 벨트 위의 로봇 코드 #include int N, K; int A[200]; int solve() { int ret = 0; int zero_count = 0; int robot[200 * 1000];..
url: https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net na982님 풀이 참고 https://na982.tistory.com/118 [삼성 SW 역량 테스트] 새로운 게임 2 새로운 게임 2 강의 새로운 게임 2 코딩 #include struct POS { int y, x, d; }; const int dy[] = { 0, 0, -1, +1 }; const int dx[] = { +1, -1, 0, 0 }; int n, k; int col..