전체 글
[17413] 단어 뒤집기2
🌿 문제 [17413] 단어 뒤집기2 🌿 해결 방법 경우는 크게 3가지로 나누어서 보면 된다. ''를 만날 때까지 나오는 모든 소문자, 공백, 숫자를 그대로 출력한다. 두번째 경우는 단어 하나가 끝났다는 뜻이기 때문에 스택을 점검하고 비어있지 않다면 모두 출력해준다. 세번째 경우는 그냥 스택에 바로 추가한다. 마지막으로 스택이 비어있는지 다시 한번 확인한 후, 남아있는 문자가 있다면 출력해준다.(마지막 단어) 한 가지 주의할 부분은 입력 문자 s에 공백이 있을 수 있기 때문에 getline을 통해 반드시 공백을 포함해서 입력받아야 한다. 🌿 내 코드 // [17413] 단어 뒤집기2 // 구현, 문자열, 스택 #include #include using namespace std; stack wordStac..
DFS & BFS
DFS(Depth First Search) • 깊이 우선 탐색 • 스택 or 재귀함수 이용 • 동작 과정 1. 탐색 시작 노드를 스택에 넣고 방문 처리 2. 스택의 최상단 노드에 방문하지 않은 노드가 하나라도 있다면 그 노드를 스택에 넣고 방문 처리 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드 꺼냄 3. 더 이상 2번의 과정을 수행할 수 없을 때까지 반복 BFS(Breadth First Search) • 너비 우선 탐색 • 그래프에서 가까운 노드부터 우선적으로 탐색 • 큐 사용 • 특정 경로에서 최단거리 찾을 때 많이 사용 • 동작 과정 1. 탐색 시작 노드를 큐에 삽입하고 방문 처리 2. 큐에서 노드를 꺼낸 뒤 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리..
2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천
내 코드 // 2021 KAKAO BLIND RECRUITMENT #include #include using namespace std; string solution(string new_id) { string answer = ""; for(int i = 0 ; i < new_id.size() ; i++) { // 1단계 if('A'
[13023] ABCDE(C++)
문제 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 내 코드 // [13023] ABCDE #include #include #include using namespace std; bool visited[2001]; vector friendsInfo[2001]; void dfs(int x, int depth) { if(depth == 4) { cout > n >> m; for(int i = 0; i > a >> b; friendsInfo[a].push_back(b); friendsInfo[b].push_back(a); } for(int i = 0; i < n; i++) { memset(v..
[1707] 이분 그래프(C++)
문제 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 내 코드 // [1707] 이분 그래프 // https://www.acmicpc.net/problem/1707 // 그래프, dfs, bfs #include #include #include #include using namespace std; vector list[200001]; int visited[200001], v; bool ans = true; void bipartite(int start) { queue q; visited[start] = 1; q...
[1182] 부분수열의 합(C++)
문제 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 내 코드 // [1182] 부분수열의 합 // https://www.acmicpc.net/problem/1182 // 브루트포스, 백트래킹 #include using namespace std; int n, s, ans = 0, num[21]; void input() { cin >> n >> s; for(int i = 0 ; i > num[i]; } } void solve(int index..
[1476] 날짜 계산(C++)
문제 바로가기 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19) 우리가 알고있는 1년은 준규가 살고있는 나라에서는 1 1 1로 나타낼 수 있다. 1년이 지날 때마다, 세 수는 모두 1씩 증가한다. 만약, 어떤 수가 범위를 넘어가는 경우에는 1이 된다. 예를 들어, 15년은 15 15 15로 나타낼 수 있다. 하지만, 1년이 지나서 16년이 되면 16 16 16이 아니라 1 16 16이..
[3085] 사탕 게임(C++)
문제 [3085] 사탕 게임 상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다. 가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다. 사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 보드의 크기 N이 주어진다. (3 ≤ N ≤ 50) 다음 N개 줄에는 보드에 채워져 있는 사탕의 색상이 주어진다. 빨간색은 C, 파란색은 P, 초록색은 Z, 노란색은 Y로 주어진다. 사탕의..