일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시뮬레이션
- 알고리즘
- Data Structure
- 알고리듬
- GitHub
- aws
- SWEA
- programmers
- Python
- Bruth Force
- 코테
- Vue.js
- hash table
- 코딩테스트
- django
- Back tracking
- BFS
- 구현
- boj
- gpdb
- JavaScript
- DFS
- CSV
- 모의SW역량테스트
- spring boot
- Linked list
- SQL
- Algorithm
- Priority Queue
- Trie
- Today
- Total
목록구현 (22)
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: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpLlKAQ4DFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 핵심 1. BFS 문제 2. 큐에 push 할 때 조건 (터널이 연결되어 있음) 을 잘 구현해야 한다. 먼저 터널 종류에 따른 방향 정보가 담긴 dr[7 + 1][4], dc[7 + 1][4] 배열을 미리 만들어 준다. 이 때 행은 터널 구조물 타입을 의미한다. 따라서 맵을 탐색하며 map[r][c] 에 0이 아닌 수가 들어 있다면 터널이 연결되어 있는지를 확인한다. 터널이 연결되어 ..
url: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=3561&sca=99 JUNGOL www.jungol.co.kr 풀이 핵심 1. 가장 가까우면서 나보다 크기가 작은 먹이를 찾는 방법을 구현하는 것이 중요하다. (BFS로 구현) 거리가 같을 경우 행 index가 작은 순서로, 행 index가 같을 경우 열 index가 작은 순서로 탐색해야 한다. 그리고 나보다 크기가 작은 먹이를 찾았다면 위치 및 거리를 return 해줘야 한다. 여기서 나보다 작은 먹이를 찾지 못했다면 프로그램을 종료한다. 거리가 같을 경우 / 행 index가 같을 경우를 고려해야 하므로 우선순위 큐를 사용했다. STL 큐는 sort에 사용할 수 없고 priority_queue를..

url: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 핵심 1. Back Tracking / Bruth Force 문제 (완전 탐색) 2. 벽을 만날 때 방향 전환을 어떻게 해주느냐가 핵심이다. 방향 배열을 다음과 같이 구성하면 그림에 표시된 주황색 방향과 같다. ... const int dy[] = { 1,0,-1,0 }; const int dx[] = { 0,-1,0,1 }; ... 코드 #define _CRT_SECURE_NO_WA..
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/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 풀이 핵심 1. 최소 구슬을 굴리는 (기울이는) 횟수 구한는 문제 --> BFS로 풀이 2. 빨간 구슬, 파란 구슬의 시작 위치를 red_sr, red_sc, blue_sr, blue_sc 에 저장한다. 3. 4차원 배열인 check 배열을 활용해 중복 방문을 방지 한다. ... bool check[10][10][10][10]; ... /..
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,..