목록분류 전체보기 (156)
DOTY
2477번: 참외밭 (acmicpc.net) 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 머리로는 대충 떠오르는데 예외 처리 하는데 하나씩 놓치는거 보면 머리가 안굴러가는 것 같기도..ㅠㅠ #include using namespace std; int main(void) { int K; cin >> K; pair way_check[6]; int way, length; int max_H = 0; int max_V = 0; int answer = 0; for(int i = 0; i < 6; i++) { cin..
코딩테스트 연습 - 등굣길 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀다가 김 빠진 문제. #include using namespace std; int solution(int m, int n, vector puddles) { int answer = 0; int map[101][101] = {0, }; for(int i = 0; i < puddles.size(); i++) { map[puddles[i][1]][puddles[i][0]] = -1; } for(int i = 1; i
10830번: 행렬 제곱 (acmicpc.net) 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 지옥 같았던 문제..... #include using namespace std; vector temp_power(vector &tempA, vector &tempB, int N) { vector power_temp(5, vector(5, 0)); for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { int temp = 0; for(int k = 0; k < N; k++) { te..
A^2 = A * A 인 것은 알고 있다. A^4 = A * A * A * A 도 알고 있다. A^8 = A * A * A * A * A * A * A * A 인것도 당연하다. 그러나 이런 방법으로 알고리즘을 짠다면 시간이 더욱 걸릴 것이다. 그렇기에 연산을 줄여야 한다. A^4 = (A^2)^2 처럼 표현하여 연산을 3번에서 2번으로 줄일 수 있다. A^8 = ((A^2)^2)^2 또한 연산을 7번에서 3번으로 줄일 수 있다. 이 방법을 사용한다면 시간이 확 줄어들 것이다. 만약 A^6 과 같은 경우에는 어떻게 할까? A^6 = A * (A^2)^2 처럼 쓸 수 있을 것이다. 지수가 홀수가 되버리면 따로 A를 빼주는 방법이다. 기존의 방법은 O(n)의 시간복잡도를 가졌다면 최적화를 한 경우에는 O(lo..
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..
![rejected] main -> main (fetch first) 이 문제는 기존 데이터 손실을 막기위한 오류다. 따라서 강제로 PUSH하면 된다. git push origin +main main 앞에 '+' 붙여주는 것으로 끝!
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