![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/mar6c/btqUYGGXkEc/fJf1zA7nJABIIPXJdkWPs0/img.png)
[BOJ 20057(G4)리뷰] 지난번 풀었던 마법사 상어와 파이어볼의 후속(?) 문제인 것 같다. 이 문제 역시 시뮬레이션 문제이며 문제에 주어진 조건들을 구현하면 된다. 크게 생각해야 할 부분은 '1. 토네이도가 이동하는 부분, 2. 모래가 이동하는 부분' 이다. 토네이도의 이동을 어떻게 구현할까 고민했다. 분명 수식으로 표현되는 규칙이 있을 것 같은데 그걸 찾지는 못하겠어서 그냥 내 기준 가장 간단한 방법을 사용했다. order라는 맵과 똑같은 크기의 배열을 만들어 토네이도가 이동하는 순서를 미리 기록하는것이다. 이건 반복문을 통해 노가다로 토네이도의 이동방향에 맞게 order배열에 순서대로 채워 나갔다. 그 다음부터는 시작지점부터 시작하여 미리 구현해 놓은 토네이도의 방향대로 BFS를 수행하며 모..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/SMSSF/btqUOBGvTJc/HB5GraPMRVeN7sMgjTlgP0/img.png)
[BOJ 20056(G5)리뷰] 삼성SW 역량테스트 기출문제다. 문제에 주어진 조건에 따라 천천히 시뮬레이션 하듯이 구현하면 된다. 효율적으로 풀어보려고 노력해보다 생각보다 시간이 많이 걸렸다. 문제에서 주의해야 할 부분은 N*N맵이 서로 이어져있다는것이다. 1번행에서 1칸 위로 올라가게되면 N번행이 나오고 N번열에서 1번 오른쪽으로 이동하게되면 1번 열이 나오는 식이다. 따라서 이 부분에 대한 변환식을 따로 구현했다. int getRotation(int cur) { if (cur = N) { return cur % N; } else { return cur; } } 내가봐도..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/MFzLc/btqS9Z9tPvQ/nspiPgPkkWK3Lqf8PLBtfk/img.png)
[BOJ 3425(G2)고스택] 언뜻보면 가벼운 구현문제처럼 보이나 생각보다 푸는데 오래걸렸다. C++ STL에서 제공하는 스택을 이용하여 위에 주어진 연산들을 처리하면 된다. 주어진대로만 구현하는 것은 어렵지 않으나 몇가지 예외처리를 해야 할게있다. 문제에서 주어진것처럼 연산을 할 숫자가 부족할 경우, 0으로 나눴을 경우, 연산 결과의 값이 10억을 넘어갈 경우 에러로 간주해야 한다. 또 내가 오답처리를 받았던 이유 중 하나는 int 오버플로우를 생각하지 못했다. 10억 * 10억 연산을 할 경우 INT가 담을 수 있는 범위를 넘어버려 정상적인 연산이 불가능 하다. 따라서 자료형을 long형으로 처리해야 한다. 위에 나타난 예외들을 신경쓰며 문제에 주어진 조건대로 구현하면 정답처리를 받을 수 있다. /..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/3sOHN/btqSa8T62wT/F9eGmdNKaxCHZU41IykVQ0/img.png)
[BOJ 17837(G2) 리뷰] 2차원 벡터를 이용해 풀었다. 조건에 주어진 대로 구현하면 된다. 다만 이동하려는 곳이 파란색이거나 범위를 벗어날 경우 방향을 바꿔주는 작업을 좀 신경써야 한다. 말들이 이동하는 방법은 가장 간단한 방법을 사용했다. 이동하기전에 현재 위치에 있는 말들을 탐색하면서 남아있어야 할 말들과 이동해야 할 말들을 각각의 벡터에 넣은 후, 이동시키면 된다. 만약 이동하고자 하는곳이 빨간색이라고 하면 이동해야 할 말들을 넣은 벡터만 reverse해주면 된다. 방향을 바꾸는 작업은 방향을 바꾼후에 다시 한 칸을 이동해야 한다는 조건때문에, 방향을 바꾸고 반복문 i의 값을 감소시켜 한번 더 반복문을 돌게 했다. 이때 이미 한번 방향을 바꾼적 이 있다면 그대로 움직이지 말아야 한다. 구현..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/oDPaj/btqSgLXSnqZ/TZC6zKwlXfEesKA5PXY3LK/img.png)
[BOJ 20055(S1) 리뷰] 오늘 푼 시뮬레이션 문제다. 설명은 위에 나온대로 친절하게 나와있다. 어떻게 구현을 할까 고민하던 중에 원형큐나 연결리스트를 사용하면 될 것같아 C++ STL에 존재하는 리스트를 사용해보기로 했다. 리스트를 사용해본적이 별로없어서 사용법을 익히느라 시간을 꽤 오래썼다. (그냥 연결리스트를 구현하는게 빨랐을듯) 시간은 오래걸렸지만 이 문제를 통해 반복자라는 개념에 대해서 조금 알게되었다. 난 이 문제를 해결하기 위해 리스트를 통해 입력을 받고 "올라가는 위치"와 "내려가는 위치"를 별도의 변수에 담았다. 그리고 벨트를 회전할 때 마다 이 값들을 바꿔주었다. 벨트를 회전하는것은 매우 간단하다. 리스트의 맨 끝에 있는 요소를 맨 앞에다 붙이고, 맨 끝에 있는 요소를 삭제하면 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bxkTYk/btqGK4PeXV2/glMZKuk0lQBNAezDtUkSV0/img.png)
입력 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마지막 줄에는 이동하는 명령이 순서대로 주어진다. 동쪽은 1, 서쪽은 2, 북쪽은 3, 남쪽은 4로 주어진다. 출력 이동할 때마다 주사위의 윗 면에 쓰여 있는 수를 출력한다. 만약 바깥으로 이동시키려고 하는 경우에는 해당 명령을 무시해야 하며, 출력도..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/beJFh3/btqGU1i7sPZ/S4qWArBwpqOXtstmg6Khm0/img.png)
사무실의 크기와 상태, 그리고 CCTV의 정보가 주어졌을 때, CCTV의 방향을 적절히 정해서, 사각 지대의 최소 크기를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 사무실의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 8) 둘째 줄부터 N개의 줄에는 사무실 각 칸의 정보가 주어진다. 0은 빈 칸, 6은 벽, 1~5는 CCTV를 나타내고, 문제에서 설명한 CCTV의 종류이다. CCTV의 최대 개수는 8개를 넘지 않는다. 출력 첫째 줄에 사각 지대의 최소 크기를 출력한다. [BOJ 15683 (G5) 리뷰] 문제가 드럽게 길다..; 그런데 문제가 길다는것은 그만큼 설명을 자세하게 해준다는것. 정확히 뭘 구현해야하는지 제시해주고 있다. 사각지대의 최소 크기를 구해야하므로 백트래킹을 이용..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/RBWoD/btqGH1eDZfp/tbkcmEkKNeEzfAMjyk4zkk/img.png)
입력 첫째 줄에 N(2 ≤ N ≤ 50)과 M(1 ≤ M ≤ 13)이 주어진다. 둘째 줄부터 N개의 줄에는 도시의 정보가 주어진다. 도시의 정보는 0, 1, 2로 이루어져 있고, 0은 빈 칸, 1은 집, 2는 치킨집을 의미한다. 집의 개수는 2N개를 넘지 않으며, 적어도 1개는 존재한다. 치킨집의 개수는 M보다 크거나 같고, 13보다 작거나 같다. 출력 첫째 줄에 폐업시키지 않을 치킨집을 최대 M개를 골랐을 때, 도시의 치킨 거리의 최솟값을 출력한다. [BOJ 15686 (G5) 리뷰] 처음에 문제 이해가 잘 안돼서 여러번 읽었다. 집과 치킨집과의 거리를 치킨거리라고 하는데 주어진 치킨집의 개수를 만족하며 존재하는 집의 치킨거리의 합이 최소가 되는경우를 구하면 된다. 모든경우를 탐색해야하므로 백트래킹을 ..
- Total
- Today
- Yesterday
- 동적계획법
- 벨만포드
- 백준
- 자바
- Computer Architecture
- 중앙대학교
- 투포인터
- java
- 컴퓨터 통신
- 구현
- node.js
- 컴퓨터 구조
- 그래프
- 재귀
- dfs
- 세그먼트 트리
- typeORM
- 알고리즘
- 백트래킹
- 시뮬레이션
- 스레드
- boj
- ReactNative
- 그리디
- nodeJS
- nest.js
- nestjs
- 자바스크립트
- BFS
- 예외처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |