끄적끄적 코딩
article thumbnail
[C++] 백준 9205번 맥주 마시면서 걸어가기
알고리즘 2019. 9. 25. 16:20

DFS, BFS 문제입니다. 현재 위치에서 도착지까지 이동할 수 있는지 확인하고, 편의점의 위치를 vector에 넣어놓고 하나씩 꺼내면서 이동이 가능한지 체크했습니다. DFS를 이용해서 이동이 가능하다면 그 위치에서 다시 탐색합니다. 시작위치를 DFS에 넣고 1~3을 반복합니다. DFS 1. 도착지와의 거리가 1000이하인지 - 맞다면 flag = 1 (happy) 2. 편의점 하나씩 탐색 - 이미 방문 했다면 continue; 3. 편의점과의 거리가 1000이하라면 DFS(편의점 위치) flag == 1 이라면 happy를 출력해주고 flag == 0 이라면 sad를 출력해줍니다. #include #include #include #include using namespace std; int n; int ..

article thumbnail
[C++] 백준 10800번 컬러볼
알고리즘 2019. 9. 25. 15:49

구조체를 이용해서 공과 색에 대한 값을 저장합니다. ball = 공의 인덱스, 색, 사이즈, 합한값을 저장합니다. colorSize = 현재까지 최대 사이즈, 현재 모두 더한 누적값, 이전 최대 사이즈 colorSize에 이전 최대 사이즈의 경우는 사이즈가 같을 경우 누적되기 전의 값이 입력되어야 하기 때문입니다. ball을 size 오름차순으로 정렬을 해주고 colorSize에 각 색의 누적값을 쌓아갑니다. 현재 최대값과 비교해서 더 클 경우 (누적된 값) - (현재 색)의 누적 값을 입력합니다. 현재 최대값과 비교해서 같을 경우 (누적되기 이전의 값) - (현재 색의 누적되기 이전의 값)을 계산해서 입력합니다. 모든 공에 대한 입력이 끝났으면 ball에 대해서 숫자를 기준으로 정렬을 해준뒤 차례대로 ..

article thumbnail
[C++] 백준 10799번 쇠막대기
알고리즘 2019. 9. 24. 23:21

스택 문제입니다. ()가 나오면 쇠막대기를 자르는데 총 몇개의 막대기가 생기는지 구해야합니다. '(' 일 경우 stack에 push해주고 ')' 일 경우 pop을 해준 후 앞의 글자가 '(' 인 경우 레이저를 쏴줍니다. = 카운트에 현재 스택의 크기를 추가합니다. 앞의 글자가 ')' 인 경우 막대기가 끝나는 지점 = 카운트를 증가해줍니다. (하나의 막대기 자체를 세어줍니다.) #include #include #include #include using namespace std; int main(int argc, char *argv[]) { string str; stack s; int count = 0; cin >> str; for (int i = 0; i < str.length(); ++i) { if (s..

article thumbnail
[C++] 백준 2846번 오르막길
알고리즘 2019. 9. 24. 21:50

오르막길 내리막길 평지로 이루어졌을 때 오르막길이 가장 큰 경우의 값을 출력하는 문제입니다. 현재수가 이전수보다 크면 값을 더해주는 방식으로 오르막길의 높이를 구했습니다. #include #include #include using namespace std; int main(int argc, char * argv[]) { int n; int sum = 0; int result = 0; int arr[1010]; memset(arr, 0, sizeof(arr)); cin >> n; cin >> arr[0]; for (int i = 1; i > arr[i]; if (arr[i] > arr[i - 1]) { sum += arr[i] - arr[i - 1]; } else { resu..

article thumbnail
[C++] 백준 2669번 직사각형 네개의 합집합의 면적 구하기
알고리즘 2019. 9. 24. 19:41

2차원배열 map을 만들어줍니다. 시작점 부터 끝점 까지의 사각형 범위 안에 전부 1을 넣어줍니다. 4번 반복한 후 1의 개수를 세어서 출력해줍니다.

article thumbnail
[C++] 백준 2475번 검증수
알고리즘 2019. 9. 24. 19:34

5개의 수의 각 제곱을 더한 후 10으로 나눈 나머지를 출력해주는 문제입니다. #include #include #include using namespace std; int main(int argc, char * argv[]) { int num; int result = 0; for (int i = 0; i > num; result += num * num; } result = result % 10; cout

article thumbnail
[C++] 백준 2953번 나는 요리사다
알고리즘 2019. 9. 24. 12:34

5명의 요리사 중 가장 많은 점수를 받은 요리사가 몇번째 사람인지와, 총 점수를 출력합니다. #include #include #include using namespace std; int main(int argc, char * argv[]) { int arr[5][4]; int highScore = 0; int sum; int winner; for (int i = 0; i > arr[i][j]; sum += arr[i][j]; } if (sum > highScore) { highScore = sum; winner = i + 1; } } cout

article thumbnail
[C++] 백준 9625번 BABBA
알고리즘 2019. 9. 24. 10:41

버튼을 누를때마다 다음 처럼 변경됩니다. A -> B B -> BA 이 때 n번 버튼을 누르면 A와 B의 개수를 구하는 문제입니다. A B 1번 = 0 1 2번 = 1 1 3번 = 1 2 4번 = 2 3 5번 = 3 5 1번~5번을 보면은 A와 B는 각각 피보나치 형태를 가지는것을 확인할 수 있습니다. DP배열을 만들어서 피보나치를 계산하고 결과값을 출력해주었습니다. #include #include #include using namespace std; int main(int argc, char * argv[]) { int n; int DP[50][2]; cin >> n; DP[0][0] = 0; DP[0][1] = 0; DP[1][0] = 0; DP[1][1] = 1; DP[2][0] = 1; DP[2]..

검색 태그