728x90 algorithm 썸네일형 리스트형 [백준알고리즘] 5639번: 이진 검색 트리 -C++ [백준알고리즘] 5639번: 이진 검색 트리 -C++ 5639번: 이진 검색 트리 (acmicpc.net) 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 생각보다 애를 먹었다. 처음에 list 자료형을 이용해 splice 함수로 이리저리 preorder를 postorder로 바꾸려고 시도해봤다. 동작은 하는 것 같으나, 시간 초과/메모리 초과가 발생해 고민을 많이 했다. 그러다가 배열을 쓰는게 훨씬 빠르다는 것을 보고, 배열과 인덱스를 이용해 처리하도록 변경했다. 문제 풀이 트리 탐색 방법은 전.. 더보기 [백준알고리즘] 17478번: 재귀함수가 뭔가요? -C++ [백준알고리즘] 17478번: 재귀함수가 뭔가요? -C++ 17478번: 재귀함수가 뭔가요? (acmicpc.net) 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 또다시 오랜만에 문제를 풀 수밖에 없었어서 실버 단계로 시작했다. 쉬워 보이는데 정답률이 왜 낮나 했더니 오타가 잘 발생하는 듯하다. 나도 그대로 복사했다고 생각했는데 IDE에서 어쩌다가 자동으로 조절되면서 오타가 발생했던 거였다. 참고로 오타는 Online Diff 사이트를 통해 직접 확인해서 고쳤다. 어디가 오타인지 모르겠는 분들은 그냥 di.. 더보기 [백준알고리즘] 5904번: Moo 게임 -C++ [백준알고리즘] 5904번: Moo 게임 -C++ 5904번: Moo 게임 (acmicpc.net) 5904번: Moo 게임 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o www.acmicpc.net 분할 정복 문제로, 이래저래 고민하다가 길이를 기준으로 재귀적으로 풀었다. 최악의 경우라도 수의 범위나 시간이 재귀적으로도 충분할 것이라 생각했다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 문제에서 주어진 조건을 이용했다. \(M(k) =\ 'o'가\ k+2개인\ mo..o\ 문자열\) \(S(k) = S(.. 더보기 [백준알고리즘] 4375번: 1 -C++ (테스트케이스의 개수가 주어지지 않은 경우) [백준알고리즘] 4375번: 1 -C++ (테스트케이스의 개수가 주어지지 않은 경우) 4375번: 1 (acmicpc.net) 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 정수론 문제를 보다가 재밌어 보여서 풀어봤다. 처음에 문제가 뭔 소리인지 몰랐다가 문제를 이해하고 나서는 쉽게 풀 수 있었다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 문제에서 요구하는 것은 정말 1로 이루어진 수(1, 11, 111,...) 중에서 N의 배수인 값의 자릿수를 구하는 것이다. 따라서, 정말 간단하게 뒤에 1을 붙이면서 N으로 나누어 떨어지는지 확인하면 된다. .. 더보기 [백준알고리즘] 1715번: 카드 정렬하기 -C++ [백준알고리즘] 1715번: 카드 정렬하기 -C++ 1715번: 카드 정렬하기 (acmicpc.net) 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 그리디 알고리즘을 몇 개 풀어보면서 느낀 게, 참 SJF 방식만 알면 모든 문제가 쉽게 생각되는 것 같다. 그만큼 SJF가 대표적인 그리디적인 방식인 것이기도 하지만 말이다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 우선, 카드의 개수를 봤을 때 굳이 배열을 안 쓰고 map을 써도 시간이 충분하겠다고 생각이 들었다. map과.. 더보기 [백준알고리즘] 4796번: 캠핑 -C++ [백준알고리즘] 4796번: 캠핑 -C++ 4796번: 캠핑 (acmicpc.net) 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 그리디의 다른 쉬운 문제를 풀었다. 이 문제도 예전에 풀었던 ATM 문제와 같이 SJF 방식으로 풀면 된다. 이게 그리디지 ㅋㅋ 하면서 쉬워서 기분 좋았다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 어떤 경우에서든 연속된 \(P\) 일 중에 최대 \(L\) 일만 사용할 수 있어야 한다. 즉, \(V+0 \sim V+P+0\) 까지도 \(L\) 일만 사.. 더보기 [백준알고리즘] 16953번: A → B -C++ [백준알고리즘] 16953번: A → B -C++ 16953번: A → B (acmicpc.net) 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 그리디 느낌이 나는 쉬운 문제를 찾다가 발견했다. 어려운 문제는 아니었으나, 문제 풀이를 생각했을 때 직관적으로 그리디 하게 풀 수 있겠다고 느꼈다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 정수 A에서 B로 바꿔야 한다. 아래의 두 가지 경우를 하나씩 사용해 최종적으로 B로 바꿔야 한다. 2를 곱한다. 가장 오른쪽 수에 1을 추가한다. (자리수 이동) 즉, 예제와 같이 A와 B가 각각 2와 162라면, 아래와 같이 변경할 수 있다. 최종적으로 4개의 연산이 요구된다... 더보기 [백준알고리즘] 1439번: 뒤집기 -C++ [백준알고리즘] 1439번: 뒤집기 -C++ 1439번: 뒤집기 (acmicpc.net) 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 그리디 알고리즘을 풀어보고 싶어서, 안 푼 그리디 문제 중에 그나마 쉬운거부터 골랐다. 쉽게 풀긴 했는데, 이게 그리디인지는 느낌이 안 오는 문제였다. 다른 문제를 더 풀어봐야 할 것 같다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제풀이 0과 1로 이루어진 문자열이 주어진다. 이때 0은 1로, 1은 0으로 뒤집을 수 있다. 모두 같은 숫자로 이루어진 문자열을 .. 더보기 이전 1 2 3 4 5 6 ··· 37 다음