본문 바로가기

Problem solving/BOJ29

[BOJ] 6593. 상범 빌딩 (C++) 문제 정육면체는 금으로 이루어져서 나갈 수 없거나 비어있어서 지나갈 수 있게 되어있다. 금으로 막혀있어 지나갈 수 없는 칸은 '#'으로 표현되고, 비어있는 칸은 '.'으로 표현된다. 당신의 시작 지점은 'S'로 표현되고, 탈출할 수 있는 출구는 'E'로 표현된다. 각 층 사이에는 빈 줄이 있으며, 입력의 끝은 L, R, C가 모두 0으로 표현된다. 시작 지점과 출구는 항상 하나만 있다. 탈출하는데 필요한 최단 시간은? 생각할 것 층이 있었기에 3차원 벡터로 만들어주었다 코드 #include #include #include #include using namespace std; int dl[6] = {0, 0, 0, 0, -1, 1}; // 동서남북상하 int dx[6] = {0, 0, -1, 1, 0, 0.. 2023. 8. 23.
[BOJ] 2468. 안전 영역 (C++) 문제 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수 출력 장마철에 내리는 비의 양에 따라서 물에 잠기지 않는 안전한 영역의 개수는 다르게 된다 생각할 것 각 높이마다 안전한 영역의 개수가 다르다. 왼쪽은 4 이하인 지점이, 오른쪽은 6이하인 지점이 모두 잠긴 경우 영역의 개수이다. 코드 #include #include using namespace std; int N; int dx[4] = {-1, 1, 0, 0}; // 상하좌우 int dy[4] = {0, 0, -1, 1}; vector board; vector visited; void dfs(int x, int y, int height) { visited[x][y] = true; for (int k = 0; k < 4; k++) { int nx .. 2023. 8. 23.
[BOJ] 7785. 회사에 있는 사람 (C++) 문제 모든 사람의 출입카드 시스템 로그를 가지고 있을 때, 현재 회사에 있는 모든 사람을 사진 순의 역순으로 출력 입력은 이름 뒤에 "enter"나 "leave"가 주어진다. "enter"인 경우는 출근, "leave"인 경우는 퇴근이다. 생각할 것 map을 사용하기 map은 디폴트가 key를 기준으로 오름차순 정렬한다. 내림차순으로 정렬하려면 map 으로 선언한다. 구현 key가 존재할때 leave이면 값 지우기 코드 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin >> N; string name, type; map m; fo.. 2023. 8. 11.
[BOJ] 1920. 수 찾기 (C++) 문제 N개의 정수 배열이 주어지고, M개의 수들이 주어진다. 이 수들이 N개 안에 존재하면 1, 존재하지 않으면 0출력 생각할 것 unordered_map은 탐색에 O(1)의 시간복잡도가 소요되므로 unoredered_map으로 찾아보려한다. 배열 인덱스를 사용함과 다르게 key값으로 정수 범위를 넣어도 된다. 코드 #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N, M, n; cin >> N; unordered_map m; for (int i = 0; i > n; m[n] = true; } cin >> M; for (int.. 2023. 8. 11.