본문 바로가기

Algorithm/Implementation

(746)
(C++) - 백준(BOJ) 14499번 : 주사위 굴리기 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 구현 문제였습니다. 풀이방법 다음과 같이 주사위의 방향을 설정해줍니다. 방향 설정 후 명령어를 입력받을 때마다 정답을 출력해주면 됩니다. Code #include #define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); using namespace std; //위,아래,동,서,남..
(C++) - 백준(BOJ) 20056번 : 마법사 상어와 파이어볼 www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 구현문제였습니다. 풀이방법 1. 파이어볼은 행,열,질량,속도,방향 5개의 정보를 포함하고 있습니다. 구조체를 이용해줍니다. 해당 구조체들을 원소로 파이어볼들의 정보를 담은 vector 변수 fireBalls, 격자의 정보를 저장할 vector변수 board를 선언해줍니다. 그리고 8방향을 표현할 dx,dy배열, 모두 홀수또는 짝수 방향일 때 분산시킬 방향의 정보를 담는 o..
(C++) - 백준(BOJ) 1913번 : 달팽이 www.acmicpc.net/problem/1913 1913번: 달팽이 N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 www.acmicpc.net 구현문제였습니다. 풀이방법 1. (n/2, n/2) = 1로 시작합니다. 2. cnt가 n*n될때까지 cnt를 1씩 증가시켜주면서 방향을 전환해줍니다. 한 변을 채운다는 느낌으로 선언한 a배열에 cnt를 저장해주시면됩니다. 한 변을 채우고 나면 dir변수를 바꿔서 방향을 전환해줍니다. Code #include using namespace std; int n, x, y, dir, findNum, cnt = 1, p..
(C++) - 백준(BOJ) 17144번 : 미세먼지 안녕! www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 구현문제였습니다. 풀이방법 매 초마다 다음과 같은 순서로 작동합니다. 1. 공기청정기의 방향을 잡아줍니다 : 바람의 방향을 dx,dy배열에 저장했습니다. 각자 상,우,하,좌에 해당합니다. 그 다음 방의 한칸마다 바람의 방향을 지정해주어 공기청정기 가동시 적절히 이동하도록 합니다. 2. 확산시킵니다 : 공기 청정기로는 확산되지 않습니다. 또한 동시에 퍼져야 하기 때문에 미세먼지가 이동하는 양과 확산 방향의 개수..
(C++) - 백준(BOJ) 3190번 : 뱀 www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net deque을 이용한 시뮬레이션 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 deque snake를 선언합니다. 뱀의 머리는 front(), 뱀의 꼬리는 back()이라고 생각합니다. 한 원소의 자료형은 Snake라는 x,y 좌표 정보를 가지고 있는 구조체입니다. 뱀의 몸통에 부딪혀 게임이 종료될 수 있기때문에 뱀의 형태를 모두 저장해야 하기 때문입니다. 입력을 받습니다. 사과가 있는 위치는 1로만들어주고, map자료..
(C++) - 프로그래머스(2019 KAKAO BLIND RECRUITMENT) : 실패율 programmers.co.kr/learn/courses/30/lessons/42889?language=cpp# 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 간단한 구현문제였습니다. 풀이방법 1. map에 스테이지별로 도전하고 실패한 사람을 세줍니다. (key,value) = (스테이지, 실패자 수) 입니다. 2. 실패율을 구해 vector 변수에 loseRatio 저장합니다. 실패율은 다음과 같습니다. 스테이지 i-1까지 도전한 사람들의 누적 수를 구해줍니다. 현재 스테이지 / (총 인원 - 누적 수)가..
(C++) - 프로그래머스(Summer/Winter Coding(~2018)) : 방문길이 programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 단순 구현문제였습니다. 풀이방법 1. 현재 위치에서 이동시에 좌표평면 바깥으로 넘어가지 않는다면 걸어갈 수 있는지 판단할 수 있습니다. 2. 넘어가지 않는다면 명령어를 시행한 후의 다음위치 X,Y를 nextX, nextY변수에 저장해줍니다. 3. 다음 각자 가는 방향에 따라 판단해줍니다. 3-1. 'U'인경우 현재위치에서 올라가는 방향이 이미 간 길이 아니라면 새로운 길이므로 answer++; 그리고 다음위치에서 내려가는 방향 또한 같은 길이기 때문에 갱신해주어야합니다. 3-2. 'D'인경우 현재위치에서 내려가는 방향이 이미 간 길이 아니라면 새로운 길이므..
(C++) - 백준(BOJ) 14654번 : 스테판 쿼리 www.acmicpc.net/problem/14654 14654번: 스테판 쿼리 첫째 줄에 라운드의 수 N이 주어진다. (1 n; for(int i = 0; i > teamA[i]; for(int i = 0; i > teamB[i]; for(int i = 0; i < n; i++){ if(teamA[i] == 1 && teamB[i] == 2) cntA = 0, cntB++; else if(teamA[i] == 2 && teamB[i] == 3) cntA = 0, cntB++; else if(teamA[i] == 3 && teamB[i] == 1) cntA = 0, cntB++; else if(teamB[i] == 1 && teamA[i] == 2) ..