728x90
반응형

CPP 175

백준, BOJ, 3190번, 뱀 : C++ [CPP]

문제대로 구현하면 된다. 하지만 어렵지는 않았다. 그냥.. 중간에 if 조건문에서 == 써야할 것을 =으로 써서 30분 날렸다. https://www.acmicpc.net/problem/3190 # 맞는 풀이 #include #include #include #define X first #define Y second using namespace std; //하 상 우 좌 -> 좌측 위 기준 int dx[4] = { 1,-1,0,0 }; int dy[4] = { 0,0,1,-1 }; int N, K, L; int map[100][100]; char direction[10001]; queue q; //꼬리 잘라내기 //1.머리를 hx,hy로 옮김, 게임시간 cnt int Move(int hx, int hy, ..

백준, BOJ, 1707번, 이분 그래프 : C++ [CPP] ★

사실 처음 들었을 때 이분그래프의 정의가 알아듣기 힘들었다. 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. ??음.. 무슨 말이지?? 즉, 나는 내 집합의 정점과 연결되면 안된다...? 그렇다. 그냥 색을 2가지로 칠할 수 있을 때 인접한 노드가 나와 같은 색을 가지면 안된다는 말과 같다. https://www.acmicpc.net/problem/1707 #맞은 풀이 #include #include #define X first #define Y second #define MAX 20001 using namespace std; int K; // 테스트케이스 수 in..

백준, BOJ, 1753번, 최단경로 : C++ [CPP] ★★★★★

어렵다. 다익스트라를 배웠지만 코딩테스트에서 다시 쓰니까 어렵다 https://www.acmicpc.net/problem/1753 #맞은 풀이 #include #include #include #include #include #define INF INT_MAX using namespace std; int V,E,start; //벡터를 원소로 가지는 배열 -> vector adj[20001]; // 인접행렬 from,(weight,to) //-> adj[1] = {3,5} 의 의미 1번 정점에서 5번으로 가는 가중치 3 //이런 그래프에서 최단거리 => 다익스트라 테이블 int table[20001]; //최소 간선을 위한 minHeap {거리, 정점 번호} -> 일반적으로 first를 기준으로 오름차순으로..

백준, BOJ, 16637번, 괄호추가하기 : C++ [CPP]

어려웠다. 사실 생각은 났는데 작성하기가 힘들다. 아직 구현하는 능력이 부족하다. 100문제밖에 안풀었는데 잘하길 바라는 것은 사치겠지 더군다나 시간제한이 있는 것으로 봐선.. 어려워보였지만 다행히 20개가 넘는 식은 안나와서 풀 수 있었다. https://www.acmicpc.net/problem/16637 #맞는 풀이 #include #include #include #include using namespace std; int N; string s; int ans_M = INT_MIN; //괄호를 씌웠을 때, 안씌웠을 때 모두 조사해본다. //괄호에 의해서만 연산 순서가 정해진다 (모두 연산 순위 같음) //연산 int operation(int a, int b, char c){ int result; /..

C++문법/ 프렌드, Friend 키워드

객체의 신뢰성과 객체지향의 원리에 따라 Encapsulation, Inheritance는 지켜져야 한다. 그러나 너무 엄격하게 상속이나 캡슐화로 비효율적인 경우도 있다. 이럴 때는 진짜 조그마한 예외를 두어 융통성을 늘릴 수 있게 했다. friend 키워드를 쓰면 특정 대상에 대해 모든 멤버를 공개할 수 있다. -> friend를 선언한 대상에게 내 모든 것을 공개한다는 말이다. 프렌드로 지정되면 액세스 지정자에 상관없이 모든 멤버를 읽을 수 있다. 프렌드는 전역 함수, 클래스, 멤버 함수의 세 가지 수준에서 지정한다. 차례대로 살펴보자 1. 외부 전역 함수 외부의 전역 함수를 프렌드로 지정할 때는 클래스 선언문 안에 원형을 밝히되 friend지정자를 붙인다. 예를 들어서 sub함수를 Some 클래스의 ..

백준, BOJ, 1543번, 문서 검색 : C++ [CPP]

어렵지 않았다 다만 첫번째로 못풀었다. 왜 그런지 고찰해보자 https://www.acmicpc.net/problem/1543 #맞은 풀이 #include #include using namespace std; int main() { string s; string target; getline(cin, s); getline(cin, target); int size = target.size(); int cnt = 0; while (1) { int idx = s.find(target); //찾았으면 해당 문자열에서 삭제 if (idx != string::npos) { auto it = s.begin() + idx; //s.erase(it, it+size); -> 삭제 s = s.substr(idx + size)..

백준, BOJ, 2503번, 숫자야구 : C++ [CPP]

이것도 어렵다. 사실 BruteForce문제는 어렵다. 우리 머리 속에서 생략한 계산을 표현할 줄 알아야 하기 때문이다. 우리는 왜 숫자야구를 할 수 있을까? 왜 이것은 후보가 아닐까를..? 표현할 수 있어야 한다. 알아보자 https://www.acmicpc.net/problem/2503 #맞는 풀이 #include #include #include using namespace std; int N; // 주어진 힌트 수 bool num[1001]; int main(){ cin >> N; fill(num, num+1001, true); // 처음엔 숫자모르니까 다 정답의 후보 //하지만 같은 숫자가 있으면 후보가 될 수 없음. for (int i = 100; i n >> st >> b; string s =..

C++ 문법 / typedef, using, auto, decltype, constexpr,

C++에서 우리가 조금 더 편의성을 가질 수 있게 하는 키워드들을 모아왔다. 알아보자 1. typedef typedef를 많이 썼다면 그것은 거의 구조체 만들 때 썼을 것이다. typedef를 선언해서 별명을 만든 것을 기억하는가? 해당 구조체가 이름으로도, 별명으로도 선언이 되어서 우리가 조금 더 짧게 쓰거나 편하게 호출할 수 있었다. **typedef는 새로운 자료형을 정의하는 것이 아니라 있던 자료형의 별명이다. 그러나 typedef는 비단 구조체에만 쓰이는 것이 아니었다. 열거체에도 쓰일 수 있다. 뿐만 아니라 사용자 정의 타입에도 다 쓰인다. 다만 암묵적인 규칙이 있다. typedef로 변환한 별명들에는 _t라는 접미사가 붙는다. 그래서 우리가 document를 볼 떄 _t가 있다면 유심히 보는..

C++ 문법 / 기본 수학 연산 함수

기본 제공하는 함수라서 라이브러리가 필요없다. 실수 소수점 모두 버리기 올리기 floor : 소수점 모두 버리기 ceil: 소수점 모두 올리기 다시 말하면 천장과 바닥인데 5.67의 천장은 왠지 6일것 같고 바닥은 5일 것 같다? 는 맞다. 함수의 이름을 괜히 그렇게 짓는 것이 아니다. floor(5.67); ceil(5.67); 출력은 5 6 음수도 천장 바닥이 같아?????? floor랑 ceil의 의미를 파악해보자 ceil은 높다는 생각이 들고 floor는 낮다는 생각이 든다. 즉, ceil 하면 값이 커지고 floor하면 값이 작아진다. 다시 말해서 -2.3을 보면 -2.3을 ceil 하면 -2 -2.3을 floor 하면 -3이 되는 것이다. 다음은 실수에 대한 반올림 round: 반올림한다. 5..

백준, BOJ, 1937번, 욕심쟁이 판다 : C++ [CPP] ***

DFS + DP 문제다. DFS를 어떻게 설계해야할까? 가 문제다. https://www.acmicpc.net/problem/1937 #맞는 풀이 #include #include #define X first #define Y second using namespace std; int dx[4] = { -1,1,0,0 }; int dy[4] = { 0,0,-1,1 }; int map[500][500]; int dp[500][500]; int N; int ans; //좌표 int dfs(int x, int y) { //만약 저장되어있지 않으면 if(dp[x][y] == 0){ dp[x][y] = 1; // 우선 해당 노드에서 1일 살 수 있음( + 방문체크와 같음) int cnt = 0; // 몇개나 다른 노..

728x90
반응형