분류 전체보기 387

백준 1743 음식물 피하기, c++

작성한 코드는 다음과 같다. 주어진 NxM 행렬에 대해 bfs 알고리즘으로 탐색해, 문제에서 원하는 만큼의 영역을 구해 출력하는 문제였다. 전체 코드 구조는 비슷하지만 조금씩 응용되어 문제가 나오기 때문에 코드를 완벽히 이해하고 문제에 맞게 적용할 수 있도록 더 연습해야겠다. (백준 1303과 유사) #include #include using namespace std; int n, m, k, max_result = 0, dir[4][2] = { {1, 0}, {-1, 0}, {0, 1}, {0, -1} }; int b[101][101] = {-1,}; queue q; bool visited[101][101]; void bfs(int r, int c, int team) { q.push({ r, c }); ..

백준 2024.03.04

백준 1303 전쟁 - 전투, c++

처음 작성한 코드는 다음과 같다. 하지만 틀렸다는 결과가 떴다. 순서대로 쭉 이어져 있어야 붙어있는 거라고 생각해 그렇게 코드를 짠 거였지만, 생각해보니 행렬 순서대로 옆이 아니라도 위 아래로 붙어 있는 경우도 고려해주어야했다. #include #include using namespace std; int main(){ int n, m; cin >> n >> m; char arr[n][m]; for(int i=0; i arr[i][j]; int myteam = 0; int otherteam = 0; int count = 1; for(int i=0; i

백준 2024.03.03

백준 2293 동전 1, c++

작성한 코드는 다음과 같다. 다이나믹 프로그래밍을 사용하여 구현하는 문제였다. 첫번째 for문에서는 입력받은 n개의 경우로 만들 수 있는 경우의 수를 세주고 두번째 for문에서는 1부터 k까지를 몇가지 방식으로 만들 수 있는 지를 계산한다. 최종은 dp[k]를 출력한다. 예를 들어 0부터 k까지의 모든 수를, 1로 만들 수 있는 경우의 수를 먼저 (dp배열에) 계산하고 0부터 k까지의 모든 수를, 2까지 추가됐을 때 만들 수 있는 경우의 수를 기존 (dp배열에) 에 더해주고 0부터 k까지의 모든 수를, 5까지 추가됐을 때 만들 수 있는 경우의 수를 기존 (dp배열에) 에 더해주는 방식을 사용한다. #include #include using namespace std; int main() { int n, k..

백준 2024.03.01

백준 2910 빈도 정렬, c++

코드 구현을 위한 대략적인 나의 로드맵은 다음과 같다. 3번에서 짝을 짓는 것을 구현하기 위해서는 해시 맵 key-value를 사용해야 했다. 구현한 코드는 다음과 같다. #include #include #include #include using namespace std; int main() { //초기화 int N, C; int arr[N]; int num = 0; unordered_map myHashMap = {{0,0}, }; for (const auto& pair : myHashMap) { pair.first = num; num++; } // N, C 입력 받기 cin >> N >> C; //1,2,3구현 for(int i=0; i> arr[i]; myHashMap[arr[i]].second++;..

백준 2024.02.27

백준 2460 지능형 기차 2, c++

작성한 코드는 다음과 같다. 첫번째 역에서는 max를 그냥 지정하고, 두번째 역부터는 temp와 비교해 큰 값을 max로 정해주어야 했다. #include using namespace std; int main() { int a, b, temp; int person = 0; //현재 사람 수 int max = 0; //다음 역에서 타거나 내리는 사람을 세어 바뀌는 사람 수 //첫번째 역 cin >> a >> b; temp = (person)+b; max = temp; person = temp; //두번째 역부터는 while문에서 while(true){ cin >> a >> b; temp = (person-a)+b; if(max < temp) max = temp; person = temp; if(b==0) ..

백준 2024.02.27