본문 바로가기

코딩/BOJ

(15)
[BOJ; Baekjoon Online Judge] 2178번 : 미로 탐색 - BFS 응용 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 하후... 푸는데 골치 아팠다 최단 경로를 구해야하는 문제이니 DFS는 무조건 아니고, BFS가 맞긴하지만.. Start Node에서 Destination Node까지 최소 칸 수를 구하는 방법이 여간 떠오르지 않아서 고민을 많이 했다 처음엔 가중치를 주는 것으로 생각해봤는데 말이 안된다ㅎㅎ.. ​ 결국 해답은 한칸씩 탐색하면서 어딘가에 이동거리값을 누적시켜야한다는 결론이었고, 곧 거리표를 하나 만들어야한다는 것이다 ​ 기존의 ..
[BOJ; Baekjoon Online Judge] 1260번 : DFS와 BFS https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net Key Point : 1) DFS(Depth First Search) 와 BFS(Breath First Search)의 기본 원리를 이해한 상태에서 2) DFS는 Stack 자료형이나 재귀호출을 이용한 구현 3) BFS는 Queue 혹은 Priority Queue 를 이용한 구현 4) 한 정점이 여러 개의 정점에 연결될 수 있는 조건 5) 간선으로 연결된 두 ..
[BOJ; Baekjoon Online Judge] 1065번 : 한 수 - 어떤 양의 정수 X의 자리 수가 등차수열인거 출력하기 https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net - Key Point : 1) 처음보면 '한 수' 라는 개념이 잘 이해가 가지 않는다. 솔직히 설명이 부족하다고 생각한다. 2) '어떤 양의 정수 X의 자리수가 등차 수열을 이룬다.' 3) 그럼 1~9, 10~99 까지는 모두 등차수열이라고 가정하라는 건가? [결과값 보면 이게 맞다]. 4) 최소 3자리는 되어야 등차수열인지 아닌지 판단 가능하단 이야기다. 무작정 직관적으로 그냥 코드 작성을 하였다...
[BOJ; Baekjoon Online Judge] 4673번 : 셀프 넘버 - 생성자가 없는 경우를 출력하기 https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net - Key Point : 1) 수열은 되지만 점화식으로 표현할 규칙은 보이지 않기에...재귀로 푸는 경우도 있겠지만 나는 무식하니깐 브루트 포스.. #include using namespace std; int D[10005]; int d(int n); int main(void) { for (int i = 0; i
[BOJ; Baekjoon Online Judge] 1110번 : 더하기 사이클 - 1의자리/10의자리 숫자 구분하기 https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net - Key Point : 1) 잘 생각해보면 5분만에 그냥 풀린다...이런건 일단 노생각 선코딩부터 하는게 효율적인 덧. 더 효율적으로 짧은 코드로,,많은 방법이 있겠지만 걍 직관에 맡김. #include using namespace std; int main(void) { int A_1; int A_10; int cnt = 0; // 사이클 횟수 int N; cin >> N; /**..
[BOJ; Baekjoon Online Judge] 4344번 : 평균은 넘겠지 - 평균 넘는 사람 비율 구하기 https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net - Key Point : 1) 분기별 변수 초기화에 주의하면서 그냥 있는 그대로 풀면 된다. #include #include #include using namespace std; int main(void) { int C; int N; int A, B; double sum = 0; double avg = 0; vector v; cin >> C; for (int i = 0; i > N; for (int j = 0; j < N; j++) { cin ..
[BOJ; Baekjoon Online Judge] 1546번 : 새로운 평균 구하기 - 점수조작 https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net Key Point : 1) 조건대로 하되, '적어도 하나의 수는 0보다 커야한다.... ' 여기에 말려서 복잡한 조건을 고려하면 이 문제 못 푼다ㅠㅠ 2) 너무 디테일한 조건 걍 무시하고 직관적으로 풀어야 한다 특히 소수점 표현,,결과값에 나온거랑 틀려도 대충대충해도 풀리는 문제였다.... #include #include #include using namespace std; void swap..
[BOJ; Baekjoon Online Judge] 10871번 : X보다 작은 수 - 수열 입력 후 조건에 맞는 출력하기 https://www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 방법 1) 수열 A의 개수인 N과 출력 조건인 X를 입력받고 2) N개의 수열 A를 N개만큼 입력받는다. 3) 입력한 수열 A를 본인이 정한 자료구조에 삽입하고 4) 조건에 맞는 수만 출력한다. ※ 정렬을 요구하지 않았지만..정렬하고 싶은 욕구가 든다. 어차피 자료구조 전체에 접근을 해야하기 때문에 정렬을 하던 안하던 속도 측면에선 비슷하거나 불필요할 수 있겠지만, 결과값 활..