본문 바로가기

알고리즘/백준42

[백준] 2179 비슷한 단어 c++ https://www.acmicpc.net/problem/2179 주의해야 될 조건1. 최대인 경우가 여러 개일 때에는 입력되는 순서대로 제일 앞쪽에 있는 단어를 답으로 함=> 무조건 갱신2. 우선 S가 입력되는 순서대로 제일 앞쪽에 있는 단어인 경우를 출력하고, 그런 경우도 여러 개 있을 때에는 그 중에서 T가 입력되는 순서대로 제일 앞쪽에 있는 단어인 경우를 출력접두사의 길이가 같은 경우가 여러개일 때를 살펴보면=> abcz, abcd, abce, abc 순서대로 입력  -> 답 : abcz, abcd abcz가 제일 앞에 있으므로 S, abcd가 그 다음 앞에 있으므로 T 이다.sort() 후 : abc, abcd, abcde, abcz 가 된다. 즉, 입력 순서 인덱스도 고려해줘야 한다. 풀이1... 2024. 7. 18.
[7569] 토마토 c++ https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 bfs로 풀었다. 3차원 배열에 토마토를 저장해두고 큐가 비기 전까지 bfs를 수행한다. x,y,z 좌표는 pair에 저장해주었다. 3차원 좌표하고 자료구조하고 매칭시키는것이 조금 헷갈렸다. #include #include using namespace std; int box[100][100][100]; int M, N, H;//가로 , 세로, 높이 int ans; in.. 2023. 5. 12.
[백준] 1987 알파벳 c++ 지나왔던 길에 있었던 알파벳이 없는 길로 가야한다. 최대로 지날 수 있는 칸 수를 구하면 된다. 풀이 dfs + 백트래킹 지나온 알파벳인지 체크 -> visit #include using namespace std; int graph[27][27]; bool visit[26]; int R, C; int ans; void dfs(int y,int x, int cnt) { int dx[] = { 0,1,0,-1 }; int dy[] = { 1,0,-1,0 }; visit[graph[y][x]] = true; for (int i = 0; i = 0 && nx >= 0)/.. 2023. 4. 16.
[백준] 2137 c++ https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이 입력이 빈칸없이 주어져서 string으로 받은 다음에 int로 한 칸씩 짤라서 넣어줘야한다. bfs로 풀면 된다. (1,1)에서 (N,M)까지 가는 최단 경로의 칸수를 출력하면 된다. 각 칸에다가 (1,1)에서 각 칸까지의 칸수를 저장하고 다음 칸에 +1해서 칸의 수를 저장했다. #include #include #include using namespace std; int N, M; int num[102][102]; int .. 2023. 4. 1.