c++ 8

[C++] 백준 25179 배스킨라빈스~N~귀엽고~깜찍하게~

이 문제는 어렸을 때 많이 해 봤던 베스킨라빈스 31게임을 약간 응용해서 푸는 문제다. 백준의 돌 게임(9655)와 아주 비슷한 형태이다. 생각을 좀 해보니 N-1과 M+1의 나머지가 0이 아닐 때만 준서가 이길 수 있다. 따라서 간단하게 코드를 짜서 통과했다.#include using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; (n-1)%(m+1) != 0 ? cout  이건 여담인데, 이 문제 C++ 숏코딩 1위를 먹었다. 으하하하하

[C++] 백준 1303 전쟁 - 전투

이 문제는 간단한 그래프 탐색 문제다. 나는 가벼운 마음을 갖고 DFS로 풀었는데 생각보다 쉽지 않았다. 그래서 수많은 시행착오 후에 알게 됐는데, M이 가로가 아니라 N이 가로였다. 나는 그래프 문제 풀 때 항상 M을 가로로 했는데 선입견에 의해 틀린 것이었다. 그래도 풀고 나니 후련하다. #include using namespace std; char Map[101][101]; int n, m; int dx[4] = { 1, 0, -1, 0 }; int dy[4] = { 0, 1, 0 , -1 }; bool Check(int x, int y) { return x = n || y >= m; } int dfs(int x, int y, char v) { int ret = 1..

[C++] 백준 1167 트리의 지름

1967번과 다를 게 없는 문제였다. 그냥 입력받는 부분만 조금 바꾸고 최댓값만 수정해서 제출했다. 1967번 해설: (https://karma2.tistory.com/6) #include #define MAX 100001 using namespace std; struct Pair { int fir, sec; }; vector v[MAX]; bool visited[MAX] = {false}; int Max = 0, End = 0; //최댓값, 끝지점 변수 void dfs(int a, int l) { if (visited[a]) return; visited[a] = true; if (Max < l) //보다 더 큰 최댓값을 발견했다면 Max = l, End = a; for (int i = 0; i < (i..

[C++] 백준 1967 트리의 지름

트리의 기본적인 개념을 잡고 난 후에 풀 수 있는 문제다. 트리(Tree)란 사이클이 없는 그래프라고 본문에서 나온다. 고로 dfs로 해결이 가능했다. 최댓값을 찾은 후에 최댓값을 갱신 해주면서 가장 멀리 있는 정점을 찾고 최댓값을 초기화 해준 후 다시 dfs를 돌려서 최댓값을 찾아주는 알고리즘을 짰다. #include #define MAX 10001 using namespace std; struct Pair { int fir, sec; }; vector v[MAX]; bool visited[MAX] = {false}; int Max = 0, End = 0; //최댓값, 끝지점 변수 void dfs(int a, int l) { if (visited[a]) return; visited[a] = true; ..

[C++] 백준 24901 Binary game 2

이 문제는 각 언어의 특성을 잘 활용하여 "주석"을 활용하여 푸는 문제다. 다른 언어에서는 주석이지만 어떤 언어에서는 주석이 아니고 실제 코드로 사용될 수 있는 부분으로 나눠서 푸는 문제.. 인데 나도 에디토리얼이랑 다른 사람 코드를 보고 겨우겨우 풀었다. ㄹㅇ 구데기컵 답다. //; # \u000a import java.util.*;public class Main {public static void main(String args[]) {Scanner sc = new Scanner(System.in);int a;a = sc.nextInt();String s="";for(int i = 0; i

[C++] 백준 24725 엠비티아이

이 문제는 어렸을 때 많이 해봤던 단어 퍼즐 문제다. 처음에 dfs로 풀어야겠다 생각하고 막상 도전했는데 한 방향 찾기가 익숙치 않아 푸는 데 많은 도움을 받은 문제다. 결국 노가다로 풀었다. #include #define MAX 201 using namespace std; int n, m; string Map[MAX]; int dx[8] = { 0, 0, 1, -1, 1, -1, 1, -1 }; int dy[8] = { 1, -1, 0, 0, 1, 1, -1, -1 }; bool Check(int y, int x) { return y n || x > m; } int dfs(int y, int x) { //그냥 노가다 int ret = 0; for (int i = 0;..