알고리즘 문제/C++ 35

[백준] 23288번: 주사위 굴리기 2 - C++

문제 https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net 설명 main 함수는 다음과 같다. 문제에서의 설명과 같이 다음과 같은 순서로 코드를 작성하였다. 이동 -> 점수 -> 방향결정 주사위가 이동 방향으로 한 칸 굴러간다. 만약, 이동 방향에 칸이 없다면, 이동 방향을 반대로 한 다음 한 칸 굴러간다. 주사위가 도착한 칸 (x, y)에 대한 점수를 획득한다. 주사위의 아랫면에 있는 정수 A와 주사위가 있는 칸 (x, y)에 있..

[백준] 20057번: 마법사 상어와 토네이도 - C++

문제 https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 문제 설명 토네이도는 격자의 가운데부터 이동이 시작된다. 좌표의 시작이 (1, 1)이라고 할 때, 격자의 가운데 칸의 좌표는 (N/2+1, N/2+1)이다. 격자의 가운데 칸의 좌표를 x라고 할때, x는 화살표를 따라서 움직인다. N = 7일때, 1 1 2 2 3 3 4 4 5 5 6 6 7 순서로 왼 - 아래 - 오른쪽 - 위로 움직인다. x가 토네이도의 중..

[백준] 14567번 : 선수과목 - C++

문제 https://www.acmicpc.net/problem/14567 14567번: 선수과목 (Prerequisite) 3개의 과목이 있고, 2번 과목을 이수하기 위해서는 1번 과목을 이수해야 하고, 3번 과목을 이수하기 위해서는 2번 과목을 이수해야 한다. www.acmicpc.net 설명 #include #include #include #include using namespace std; //14567 vector a[1001]; int degree[1001]; int result[1001]; queue q; int main() { int N,M; cin >> N >> M; for(int i = 0;i> A >> B; a[A].push_back(B); degree[B]++; } for(int i ..

[백준] 23061번 : 백남이의 여행 준비 - C++

문제 https://www.acmicpc.net/problem/23061 23061번: 백남이의 여행 준비 1번 배낭이 담을 수 있는 무게는 20이고, 담을 수 있는 최대 가치는 34이므로 효율성은 1.7이다. 2번 배낭이 담을 수 있는 무게는 21이고, 담을 수 있는 최대 가치는 37이므로 효율성은 약 1.76이다. 3 www.acmicpc.net 코드 #include #include #include #include using namespace std; pair things[101]; int bags[101]; double h[101]; int N, M; int W = 0; int V = 0; int value[101][1000001]; void dp(int bagW) { //memset(value, ..

[백준] 23057번 : 도전 숫자왕 - C++

문제 https://www.acmicpc.net/problem/23057 23057번: 도전 숫자왕 모든 카드에 적힌 수의 합을 $M$이라고 할 때, 1 이상 $M$ 이하의 자연수 중 만들 수 없는 수의 개수를 출력한다. www.acmicpc.net 설명 #include #include #include #include using namespace std; int card[21]; vector vec; int sum=0; int N; void DFS(int i, int num) { vec.push_back(num); if(i == N) return; DFS(i+1,num+card[i+1]); DFS(i+1,num); } int main() { cin>>N; for(int i = 0;i> card[i]; s..

[백준] 1181번: 단어정렬 - C++

문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 설명 #include #include #include #include #include using namespace std; bool compare(string a, string b) { if(a.size()==b.size()) { return aN; for(int i = 0; i>tmp; words.push_back(tmp); } sort(words.begin(), words.en..

[백준] 2606번: 바이러스(DFS) - C++

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net #include #include using namespace std; int N,T; int map[101][101]; int visited[101]; int result = 0; void reset() { for(int i = 1; i>T; reset(); for(int i = 0;i>n1>>n2; map[n1][n2] = 1; map[n2][n1] = 1; } DFS(1); cout

[백준] 2606번: 바이러스(BFS) - C++

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 처음 코드(틀림) #include #include using namespace std; int N,T; int map[101][101]; int visited[101]; int result = 0; queue q; void reset() { for(int i = 1; i>T; reset(); for(int i = 0;i>n1>>n2; map[n1][n2] = 1; } BFS(1); coutn1>>n2;..

[백준] 2667번: 단지번호붙이기(DFS) - C++

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net #include #include #include #include using namespace std; int N; int map[25][25]; bool visited[25][25]; int dir[4][2]={{-1,0},{1,0},{0,1},{0,-1}}; int num = 1; vector v; void reset() { for(int i=0;iN; reset(); for(int i=0;i>s..

[백준] 2667번: 단지번호붙이기(BFS) - C++

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net #include #include #include #include using namespace std; int N; int map[25][25]; bool visited[25][25]; int dir[4][2]={{-1,0},{1,0},{0,1},{0,-1}}; queue q; vector v; void reset() { for(int i=0;iN; reset(); for(int i=0;i>s; fo..

반응형