브루트포스 알고리즘 8

[Java] 백준 풀기 1526 - 가장 큰 금민수

자바 백준 1526번 브론즈 1 https://www.acmicpc.net/problem/1526 1526번: 가장 큰 금민수 첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 보기 분류: 수학, 구현, 브루트포스 알고리즘 문제 풀기 주어진 숫자 N부터 시작하여 하나씩 감소시켜 가며 금민수인지 확인한다. 금민수 확인은 1의 자릿수가 4 또는 7인지 확인하여 맞다면 10으로 나눈 몫, 나머지 관계로 다음 자릿수를 확인하고 반복한다. 함수 안의 결과에 따라 true, false를 반환하여 결과를 출력한다. 코드 보기 import java.util.Scanner; public class Main { public static vo..

공부하기/백준 2023.09.20

[Java] 백준 풀기 1977 - 완전 제곱수

자바 백준 1977번 브론즈 2 https://www.acmicpc.net/problem/1977 1977번: 완전제곱수 M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완 www.acmicpc.net 문제 보기 분류: 수학, 구현, 브루트포스 알고리즘 문제 풀기 주어진 범위의 수를 하나씩 선택하여 Math.sqrt() 를 이용하여 제곱근을 구한다. 완전 제곱수인지 확인하기 위해 구한 제곱근을 int 타입으로 변경하고 제곱한 값이 초기에 선택한 값과 일치하는지 확인한다. 만약 일치한다면 완전 제곱수이므로 최솟값 또는 누적합으로 저장을 한다. 완전..

공부하기/백준 2023.09.19

[Java] 백준 풀기 1711 - 직각삼각형

자바 백준 1711번 골드 5 https://www.acmicpc.net/problem/1711 1711번: 직각삼각형 첫째 줄에 점의 개수 N(3 ≤ N ≤ 1,500)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 점의 x좌표와 y좌표가 빈 칸을 사이에 두고 주어진다. 좌표값은 절댓값이 1,000,000,000을 넘지 않는 정수이며, 주 www.acmicpc.net 문제 보기 분류: 브루트포스 알고리즘, 기하학, 피타고라스 정리 문제 풀기 이 문제는 그다지 좋아하지 않는 시간초과 해결이 관건이기에 별로인 문제이다. Scanner를 사용하여 제출해 보진 않았지만 분명 시간초과 걸렸을 것이다. 이를 피하기 위해 BufferedReader를 사용한다. BufferedReader를 이용하여 주어진 모든 좌표..

공부하기/백준 2023.09.05

[Java] 백준 풀기 2003 - 수들의 합 2

자바 백준 2003번 실버 4 https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 문제 보기 분류: 브루트포스 알고리즘, 누적 합, 두 포인터 문제 풀기 수열의 첫번째 value를 시작으로 다음 value와 합하여 누적 합을 만들고, 그 누적 합을 다음 value와 합하여 다시 누적 합을 만드는 식을 반복하면서 주어진 수열의 마지막 value까지 누적 합하는 누적 합 array를 완성한다. 누적 합 arra..

공부하기/백준 2023.07.26

[Python] 백준 풀기 1051 - 숫자 정사각형

파이썬 백준 1051번 실버 4 https://www.acmicpc.net/problem/1051 1051번: 숫자 정사각형 N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 www.acmicpc.net 문제 보기 분류: 구현, 브루트포스 알고리즘 문제 풀기 모든 좌표에 대해 가능성을 탐색한다. 이때, 기준 좌표를 결정하여 그 좌표로부터 가로, 세로에 대해 같은 값이 있는지를 찾는다. 최소 넓이는 네 개의 같은 수가 존재하지 않은 하나의 수만 있을 경우이므로 1 로 초기화한다. 하나의 좌표를 기준으로 잡고 그 값을 저장하여 가로축에 대해서 같은 숫자가 있는지를 찾고..

공부하기/백준 2023.02.04

[Java] 백준 풀기 4673 - 셀프 넘버

자바 백준 4673번 실버 5 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 문제 보기 분류: 수학, 구현, 브루트포스 알고리즘 문제 풀기 셀프 넘버인지 아닌지를 판단하기 위해 10_000 개의 배열의 Index 를 활용한다. 자기 자신과 각 자리의 합으로 이루어진 숫자는 셀프 넘버가 아니기때문에 배열에 1 로 표시를 해놓는다. 10_000 까지의 숫자를 모두 돌고 나서 배열에 1 이 아닌 0..

공부하기/백준 2023.01.22

[Python] 백준 풀기 2635 - 수 이어가기

파이썬 백준 2636번 실버 5 https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 문제 보기 분류: 수학, 브루트포스 알고리즘 문제 풀기 입력되어진 수에대해 모든 경우를 돌려본다. 만약 예제 입력과 같이 100 이 입력되었을때 99, 98, 97, ,,, 2, 1, 0 을 돌아가면 주어진 조건 "세 번째부터 이후에 나오는 모든 수는 앞의 앞의 수에서 앞의 수를 빼서 만든다." 를 만족하는 모든 경우를 따져본다. 이때, 가장 많은 수 집합이 나온 경우를 업데이트 하며 저장하고 출력한다. 코드 보기 import sys inputdata = sys.stdin.r..

공부하기/백준 2023.01.19

[Python] 백준 풀기 2851 - 슈퍼마리오

파이썬 백준 2851번 브론즈 1 https://www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 문제 보기 분류: 구현, 브루트포스 알고리즘, 누적 합 문제 풀기 누적 합이 100 을 넘기지 못했을 경우에 대한 조건을 추가해야 한다는 것을 잊지 말아야 한다. 코드 보기 import sys inputdata = sys.stdin.readline if __name__ == "__main__": running_total_ls = [0] * 10 running_total_ls[0] = int(inputdata().strip()..

공부하기/백준 2023.01.10