[BOJ C++] 1039번 - 교환
공부/알고리즘 공부2025. 10. 18. 08:53[BOJ C++] 1039번 - 교환

백준 1039번 - 교환문제더보기0으로 시작하지 않는 정수 N이 주어진다. 이때, M을 정수 N의 자릿수라고 했을 때, 다음과 같은 연산을 K번 수행한다.1 ≤ i 위의 연산을 K번 했을 때, 나올 수 있는 수의 최댓값을 구하는 프로그램을 작성하시오.입력더보기 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. 출력더보기 첫째 줄에 문제에 주어진 연산을 K번 했을 때, 만들 수 있는 가장 큰 수를 출력한다. 만약 연산을 K번 할 수 없으면 -1을 출력한다. 문제 접근처음에는 이 문제를 그리디하게 접근했었다.수의 모든 자릿수를 돌면서 해당 자릿수 뒤의 수 중 더 큰것이 있다면 가장 큰 것을 골라 그것과 교환하는 방식이다.하지만 이..

[BOJ C++] 1051번 - 숫자 정사각형
공부/알고리즘 공부2025. 10. 18. 07:12[BOJ C++] 1051번 - 숫자 정사각형

백준 1051번 - 숫자 정사각형문제더보기 N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다. 입력더보기 첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다. 출력더보기 첫째 줄에 정답 정사각형의 크기를 출력한다. 문제 접근이 문제는 보자마자 브루트포스라는 것을 알고 접근했다.입력으로 주어진 모든 값을 정사각형의 왼쪽 위의 점으로 잡고, 정사각형 한 변의 길이를 1씩 늘려가며 가장 큰 정사각형이 되는 것을 찾고자 했다.행과 열 중 더 작은 것을 정사각형의 최대 크기로 잡아 입력..

[BOJ C++] 1027번 - 고층 건물
공부/알고리즘 공부2025. 10. 16. 09:02[BOJ C++] 1027번 - 고층 건물

백준 1027번 - 고층 건물문제더보기 세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작)은 (i,0)부터 (i,높이)의 선분으로 나타낼 수 있다. 고층 빌딩 A에서 다른 고층 빌딩 B가 볼 수 있는 빌딩이 되려면, 두 지붕을 잇는 선분이 A와 B를 제외한 다른 고층 빌딩을 지나거나 접하지 않아야 한다. 가장 많은 고층 빌딩이 보이는 빌딩을 구하고, 거기서 보이는 빌딩의 수를 출력하는 프로그램을 작성하시오. 입력더보기 첫째 줄에 빌딩의 수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에 1번 빌딩부터 그 높이가 주어진다. 높이는 1,000,000..

[BOJ C++] 11726번 - 2×n 타일링
공부/알고리즘 공부2025. 10. 15. 14:25[BOJ C++] 11726번 - 2×n 타일링

백준 11726번 2×n 타일링문제더보기2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.입력더보기 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력더보기 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 문제 접근이 문제는 dp를 이용하는 문제이다.될 수 있는 경우를 조금만 계산해보면, 2x0 : 없음2x1 : 1가지2x2 : 2가지2x3 : 3가지2x4 : 5가지2x5 : 8가지...이렇게 나가게 된다.수에서 규칙이 보일텐데, 바로 피보나치 수열이 된다는 것이다.그럼 왜 이 문제가 피보나치 수열의 꼴로 나오는 것일까? 2x3 칸을 채우..

[BOJ C++] 1025번 - 제곱수 찾기
공부/알고리즘 공부2025. 10. 14. 13:11[BOJ C++] 1025번 - 제곱수 찾기

백준 1025번 - 제곱수 찾기문제더보기N행 M열의 표 A가 있고, 표의 각 칸에는 숫자가 하나씩 적혀있다.연두는 서로 다른 1개 이상의 칸을 선택하려고 하는데, 행의 번호가 선택한 순서대로 등차수열을 이루고 있어야 하고, 열의 번호도 선택한 순서대로 등차수열을 이루고 있어야 한다. 이렇게 선택한 칸에 적힌 수를 순서대로 이어붙이면 정수를 하나 만들 수 있다.연두가 만들 수 있는 정수 중에서 가장 큰 완전 제곱수를 구해보자. 완전 제곱수란 어떤 정수를 제곱한 수이다.입력더보기 첫째 줄에 N, M이 주어진다. 둘째 줄부터 N개의 줄에는 표에 적힌 숫자가 1번 행부터 N번 행까지 순서대로 한 줄에 한 행씩 주어진다. 한 행에 적힌 숫자는 1번 열부터 M번 열까지 순서대로 주어지고, 공백없이 모두 붙여져 있다..

[BOJ C++] 1022번 - 소용돌이 예쁘게 출력하기
공부/알고리즘 공부2025. 10. 14. 08:44[BOJ C++] 1022번 - 소용돌이 예쁘게 출력하기

백준 1022번 - 소용돌이 예쁘게 출력하기문제더보기크기가 무한인 정사각형 모눈종이가 있다. 모눈종이의 각 정사각형은 행과 열의 쌍으로 표현할 수 있다.이 모눈종이 전체를 양의 정수의 소용돌이 모양으로 채울 것이다. 일단 숫자 1을 0행 0열에 쓴다. 그리고 나서 0행 1열에 숫자 2를 쓴다. 거기서 부터 소용돌이는 반시계 방향으로 시작된다. 다음 숫자는 다음과 같이 채우면 된다. -3 -2 -1 0 1 2 3 ---------------------3 |37 36 35 34 33 32 31-2 |38 17 16 15 14 13 30-1 |39 18 5 4 3 12 29 0 |40 19 6 1 2 11 28 1 |41 20 7 8 9 10 27 2 |42 21 22 23 ..

반응형
image