C++
-
SWEA 2117 : [모의 SW 역량테스트] 홈 방범 서비스백준 문제풀이/GRAPH 2020. 6. 7. 00:03
문제 문제 풀어보기 풀이 테스트 케이스를 통과하기 위해 문제 꼼꼼히 읽자!!! 내일 삼성 코테보러갑니다. ㅈㅅ 주의할 점 1. 집이 1개 일수도 있다. 2. 최대 20 x 20 까지의 거리를 보자 3. 거리마다 bfs 하지 말고 한 번에 하고 계산하자. 코드 #include #include #include #include #include #include using namespace std; #define safe(x,y) x>=n || x maxSz) maxSz = dist[nx][ny]; q.push({ nx,ny }); } } // 각 거리마다 수익계산 int cnt = 0; for (int k = 1; k T; for (int i = 1; i < 50; i++) { pay[i] = (i * i) +..
-
SWEA 4013 : [모의 SW 역량테스트] 특이한 자석백준 문제풀이/etc 2020. 6. 6. 16:29
문제 문제 풀어보기 풀이 먼저 4개의 톱니바퀴를 어떤방향으로 돌릴것인지 배열에 결정해준다. 배열을 돌면서 톱니바퀴를 돌려준다. 한비트 쉬프트하며 정답에 더해준다. 코드 #include #include #include #include #include using namespace std; //#define safe(x,y) x>=n || x v(4, vector(8, 0)); // 회전방향 결정 void go(vector& dir, int index) { int tmp = index; // 왼쪽 톱니바퀴 while (tmp--) { if (v[tmp][2] != v[tmp + 1][6]) { dir[tmp] = -dir[tmp + 1]; } else break; } tmp = index; // 오른쪽 톱니바..
-
BOJ 1406 : 에디터백준 문제풀이/etc 2020. 6. 5. 12:31
문제 문제 풀어보기 풀이 사실 String 으로도 엄청 간단하게 구현이 가능합니다. 그런데 삽입,삭제가 너무 많아서 시간 초과가 나네요. 그래서 삽입,삭제가 유용한 리스트를 사용합니다. 대부분 벡터랑 비슷한데 리스트는 Iterator 를 기반으로 움직입니다. 그래서 삭제하는 과정에서 해당 cursor 위치의 노드를 삭제하면 그다음 Iterator 의 정보를 받아와야 합니다. cursor = list.erase(cursor) 이런 느낌이 되겠죠. erase 는 삭제 후 다음 노드의 Iterator를 반환해줍니다. 코드 #include #include #include #include #include using namespace std; #define safe(x,y) x>=8 || x> s >> n; lis..
-
BOJ 9663 : N-Queen백준 문제풀이/etc 2020. 5. 19. 12:50
문제 문제 풀어보기 풀이 퀸을 먼저 배치하고 가능한 경우인지 판단하는 알고리즘을 하면 시간 초과로 문제를 풀 수 없었습니다. 그래서 다른 분의 블로그를 참조해서 백트래킹을 사용했습니다. 간단히 설명하자면 퀸을 하나 넣고 퀸의 이동반경을 모두 덱에 넣습니다. 퀸이 들어갈수 있는 곳에 넣으면서 계속 덱에 넣다 보면 퀸의 수가 N 개 이면서 덱의 사이즈가 N * N 이 되는 경우가 생깁니다. 바로 이경우가 퀸을 N 개 위치시킨 경우가 됩니다. 코드 #include #include #include #define safe(x,y) x>=0&&x=0&&y < n using namespace std; int dx[] = { 1,0,-1,0,1,1,-1,-1 }; int dy[] = { 0,1,0,-1,1,-1,-1,..
-
BOJ 13023 : ABCDE백준 문제풀이/GRAPH 2020. 5. 15. 17:59
문제 문제 풀어보기 풀이 문제를 이해하는데 좀 오래 걸렸네요... 이 문제는 A -> B -> C -> D 처럼 친구의 친구의 꼬리를 4번 무는 경우를 찾는 겁니다. 그래서 DFS 를 사용해서 깊이가 4가 되는 경우를 찾으면 됩니다. 코드 #include #include #define max 2000 using namespace std; bool check[max + 1]; vector v[max + 1]; // max+1 개의 벡터 생성 int n, m; void dfs(int st, int index) { check[st] = true; // 깊이가 4인경우 종료 if (index == 4) { cout n >> m; for (int i = 0; i >..
-
BOJ 11727 : 2xn 타일링 2백준 문제풀이/Dynamic Programming 2020. 5. 15. 17:51
문제 문제 풀어보기 풀이 이거 하나만 확인하세요 !! 경우의 수를 계산하는 모든 과정에서 모듈러 연산을 하셨나요 ? ㅎㅎ 코드 #include #include using namespace std; int d[1001][3]; #define mod 10007 int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; d[1][1] = 1; d[2][0] = d[2][1] = d[2][2] = 1; for (int i = 3; i
-
[C++] pair, tuple 보다 편한게 구조체(Struct) ?프로그래밍/C++ 2020. 5. 8. 23:13
요약 : pair 와 tuple 보다 구조체(Struct) 를 사용하면 보다 효율적이고 직관적인 알고리즘 코딩이 가능합니다. 우선 pair 와 tuple 의 장단점을 조금 생각해보자면 pair는 원소의 접근이 편하지만 공간이 두 개로 한정적입니다. tuple은 공간이 무한하지만 접근이 불편합니다. 이러한 이유에서 저는 상황에 따라서 사용했습니다. 그러다가 최근에 구조체(Struct)를 사용하게 됬습니다. 구조체는 이름만으로도 무겁고 귀찮게 느껴집니다. 예를 들어 봅시다. 왼쪽, 오른쪽, 위, 아래의 4가지 정보를 한 세트로 하는 알고리즘을 구현한다고 생각해봅시다. 아래의 두 가지 구현에서 느끼셔야 할 부분은 세 가지 입니다. 1. 구조체 구현이 얼마나 간단한가. 2. 원소 추출이 얼마나 간편한가. 3. ..
-
[C++] Map 컨테이너 기본 사용법 및 예제프로그래밍/C++ 2020. 5. 8. 22:34
사용 라이브러리 · 기본함수 선언문 · map 변수명 추가 및 삭제 · insert( make_pair(key, value) ) : pair 의 형태로 원소를 저장합니다. · erase(key) : 해당 key 값에 해당하는 원소를 삭제합니다. · clear() : 모든 원소를 삭제합니다. 조회 · find(key) : 해당 key 값의 Iterator 값을 반환합니다. · count(key) : 해당 key 값의 원소의 갯수를 반환합니다. 기타 함수 · empty() : 비어있는 경우 1을 , 그렇지 않은 경우 0을 반환 · size() : 원소의 수를 반환 예제 코드 #include #include #include using namespace std; int main() { //////////////..