목록Algorithm (80)
DOTY
1629번: 곱셈 (acmicpc.net) 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 정말 고민을 많이 했던 문제. 처음 방식은 A를 곱한 수를 C로 나누었을 때 나머지를 이용했다. 하지만 시간 초과로 방법을 찾던 중 곱셈의 횟수를 줄이는 방법을 알았다. #include using namespace std; long long divide(long long A, long long B, long long C) { cout C; cout
1780번: 종이의 개수 (acmicpc.net) 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net [ 백준 2630 색종이 자르기 ] 와 크게 다를 것 없었던 문제. #include using namespace std; int paper[2187][2187]; int m_one, zero, one; void divide(int N, int x, int y) { int z = 0; int o = 0; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) ..
1992번: 쿼드트리 (acmicpc.net) 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 분할 정복문제. 관건은 괄호를 어떻게 처리할까 였다. #include using namespace std; char video[64][64]; string answer = ""; void quadTree(int N, int x, int y) { int cnt = 0; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { if(video[x + i][y +..
2630번: 색종이 만들기 (acmicpc.net) 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 색종이를 자를 때 마다 확인하면서 풀었다. #include using namespace std; int color[128][128]; int blue = 0; int white = 0; void answer(int N, int x, int y) { int cnt = 0; // cnt == N * N 이면 Blue, cnt == 0 이면 White, 이도 저도 아니면 재귀 for(int..
11729번: 하노이 탑 이동 순서 (acmicpc.net) 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 이렇게 풀면 될거 같은데.. 하다가 풀린 문제 대충 어떤 느낌인지는 알겠는데 확실히 설명하라고 하면 음....ㅜㅜㅜㅜ #include using namespace std; void hanoi(int n, int from, int sub, int to) { if(n == 1) { cout
코딩테스트 연습 - 게임 맵 최단거리 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS로 풀었다. 잔실수가 너무 많았었던 문제 #include using namespace std; int pos_x[4] = {0, 1, 0, -1}; int pos_y[4] = {1, 0, -1, 0}; int check[101][101] = {0,}; int solution(vector maps) { int n = maps.size(); int m = maps[0].size(); int answer = 0; i..
10872번: 팩토리얼 (acmicpc.net) 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 재귀 함수 어려워서 처음부터 공부하려고 푼 문제 #include using namespace std; int doFactorial(int N) { if(N > 1) { N *= doFactorial(N-1); } return N; } int main(void) { int N; cin >> N; if(N == 0) { cout
1238번: 파티 (acmicpc.net) 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 역시나 다익스트라로 풀은 문제긴 한데 메모리나 시간초과 날줄 알았는데 맞춘 문제.. #include using namespace std; int answer[1001]; int vertex[1001]; int dij[1001]; int rev_dij[1001]; void do_dij(int N, int X, vector dij) { fill_n(vertex, 1001, 100001); pr..
13549번: 숨바꼭질 3 (acmicpc.net) 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 뻘짓 하다가 시간만 쓴 문제 #include using namespace std; int cost[100001]; int dij[100001]; int main(void) { fill_n(cost, 100001, 100002); fill_n(dij, 100001, 2); vector dij(100001); int N, K; cin >> N >> K; dij[0].push_back..
1916번: 최소비용 구하기 (acmicpc.net) 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 다익스트라 사용한 문제. 계속 틀려서 고민하다가 어이없게 맞춘 문제인데 어떤 차이가 있는지 모르겠다. #include using namespace std; int cost[1001]; int dij[1001]; int main(void) { fill_n(cost, 1001, 100000001); fill_n(dij, 1001, 100001); // dij : arrive po..