본문 바로가기
백준 3053번 자바 택시 기하학 [기본수학2] 원의 넓이를 유클리드 기하학과 택시 기하학 두 가지 구하라는 문제다. 유클리드 기하학의 원의 넓이는 그 유명한 파이알의제곱 PI*r^2 이다. 택시 기하학에서의 두 점 사이의 거리는 바둑판 같은 좌표 평면에서의 거리를 의미한다. 즉 반지름이 2라면 파란점 기준에서 빨간점까지의 거리가 택시기하학상 원의 반지름인 것이다. 검은선이 반지름이고 그것을 계속 찍다 보면 오른쪽그림처럼 마름모꼴 정사각형이 된다. 저 마름모의 넒이를 구하면 되는데 우리에게 주어진것은 r의 길이 => 이등변삼각형을 구하고 * 2 를 하면 된다. 이등변 삼각형은 밑변의 절반 * 높이를 하면 되고 거기에 2를 곱하면 마름모의 넓이가 된다. => r * r 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 .. 2021. 5. 12.
백준 3009번 JAVA 네 번째 점 [기본 수학2] 1 2021. 5. 11.
백준 1085 자바 직사각형에서 탈출 [기본수학2] 사각형이 있다. 요렇게 생긴 사각형인데 x, y, w, h 를 입력하고 x, y 에서 직사각형의 변 중에 가장 가까운 경계선을 구하는 프로그램을 작성해야 한다. 저 빨간선 중 가장 짧은 거리를 구하면 된다. (삐뚤빼뚤은 ㅈㅅ.. ㅎ) 그림상에서 거리로만 보면 위로 향한 선이 가장 최솟값이다. 그 값은 어떻게 찾을 수 있을까? h-y 이다. 아주 간단하게 풀 수 있다. 위(h-y) 아래(y) 중 작은값과 오른쪽(w-x) 왼쪽(x) 중 작은값을 비교해서 가장 작은 값을 출력하면 끝이다. width = (w-x) < x ? w-x : x 이렇게 삼항연산자로 width 작은값 height 작은값을 구해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2.. 2021. 5. 6.
백준 9020번 자바 골드바흐의 추측 [기본수학2] 푼지 좀 되서 기억은 잘 가물치지만 수학2의 문제는 대부분 소수 문제 인듯 싶다.. 음 지겨워 아무튼 요약! 1. 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다. 그 두 수의 표현을 골드바흐 파티션이라고 한다. 2. n의 골드바흐 파티션을 출력하는 프로그램을 작성. 가능한 경우가 여러가지면 두 소수의 차이가 가장 작은 것을 출력 3. 테스트 케이스 T 입력 T 만큼 짝수 n입력 간단하쥬? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 import java.util.Scanner; public class Main { //baekjoon 9020 골드바흐의 추측 .. 2021. 5. 5.
백준 4948번 자바 베르트랑 공준 [기본수학2] 에라토스테네스의 체 문제가 개떡같이 길게 쓰여 있지만 간단하게 풀면 n을 입력하면 n보다 크고 2n보다 작은 소수의 개수를 출력하는 문제이다. 0을 입력할 때 까지 계속 반복하면 끝~ 저번 소수문제와 같이 이렇게 범위가 주어지고 소수를 구하는 문제는 에라토스테네스의 체 방법을 이용하면 된다. 마찬가지로 같은 방법을 이용해서 풀어보도록 하자. hellodoor.tistory.com/114 백준 2581번 자바 소수 [기본 수학2] 에라토스테네스의 체 간단하다. m, n 두 수를 입력 후 m과 n 사이의 소수의 합을 출력하고 가장 작은 소수를 출력하면 된다. 여기서는 에라토스테네스 체 방법을 이용해서 문제를 풀어본다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 hellodoor.tistory.com 에.. 2021. 5. 4.
백준 11653번 JAVA 소인수분해 [기본 수학2] 정수를 입력하면 소인수분해 하는 프로그램을 작성하면 되는 아주 간단한... 수학을 놓은지 어언.. 몇 년이냐.. 소인수분해 듣기는 했는데 정의가 정확하게 뭐였는지 까먹었당.. 그래서 구선생에게 물어보았다. 아하! 어떤 수를 소수들의 곱으로 나타내게 쪼개고 쪼개는 뭐 그런 작업이었다. 이것을 중학생 때? 배웠던가 아무튼 어렴풋한 기억이 있는데 암산으로 마구 코딩을 하기전에 먼저 손으로 소인수분해를 해보고 코드를 작성해보았다. 입력한 정수가 12 라면 우리는 소인수분해를 이렇게 할 것이다. 만약 72를 입력한다면? 소인수분해 정의도 기억이 잘 안 났지만 손으로 해보니 아주 자유자재로 써진다. 글씨체도 자유자재 아무튼 위에 풀이를 토대로 코드를 작성해본다. 1 2 3 4 5 6 7 8 9 10 11 12 13.. 2021. 4. 27.
백준 2581번 자바 소수 [기본 수학2] 에라토스테네스의 체 간단하다. m, n 두 수를 입력 후 m과 n 사이의 소수의 합을 출력하고 가장 작은 소수를 출력하면 된다. 여기서는 에라토스테네스 체 방법을 이용해서 문제를 풀어본다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import java.util.Scanner; public class Main { //baekjoon 2581 소수 수학2 public static void main(String[] args){ Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt();.. 2021. 4. 26.
백준 1978번 자바 소수 찾기 [수학2] 단계별 문제풀기 드디어 기본 수학2에 들어왔다. 첫 번째 문제는 매너 있게 쉬운 문제다. 사실 뭐.. 지금까지들의 문제도 다 쉽긴 했다. 입력할 수 N을 입력하고 1000이하의 자연수를 네 개 입력한다. 입력한 수들 중 소수를 찾는 프로그램을 작성한다. 소수란 3.141592.. 이런게 아니라 1보다 큰 자연수 중 1과 자신의 수를 약수로 가지는 수다. 즉 1, 자신의 수 빼고 나눠지는 수가 있으면 안된다. ex) 1, 2, 3, 5, 7 .... 방법 1. 뭐 아아주 단순하게 생각하면 입력한 수를 for문 돌려서 나눠 떨어지면 소수가 아닌것으로 검사하면 된다. 7이라 했을때 1 과 7은 검사대상 제외이므로 7을 2~6까지 계속 나눠보고 나눠 떨어지면 소수가 아니고 나눠떨어지는 수가 끝까지 안나오면 소수.. 2021. 4. 23.
백준 1011번 JAVA Fly me to the Alpha Centauri 수학[1] 취업한지 얼마나 됐다고 게을러져서 공부도 포스팅도 죄다 등한시 하고 있다... 그래서 간만에 백준알고리즘으로 복귀. 우선 입력값에 x(출발), y(도착)값을 입력한다. x -> y로 가는데 공간이동 장치를 최소 몇번 작동하는지 구하는 프로그램을 작성해야 한다. 처음에 이동할 수 있는 거리는 1(k)이며 그 다음 부터는 0, 1, 2 (k-1, k, k+1) 이동 가능하다. 제약이 있는데 y지점으로 도착할 때 직전의 이동거리는 1로 해야 되는 것이다. 최솟값을 단순히 생각해보면 x - > (y-x)/2 까지는 이동거리가 점점 늘어났다가 y 까지는 다시 감소하는 추세여야 한다. 그리고 이 문제를 풀 때 시간 초과로 오답처리가 꽤 여러번 되었었다. 성능도 신경써야 하는 문제이므로 그 점을 유의하면서 풀어보자... 2021. 4. 22.
백준 10757번 java 큰 수 A + B (수학1) int나 long으로는 범위를 벗어나기 때문에 그냥 int a = sc.nextInt(); int b = sc.nextInt(); a+b;로는 오류가 뜬다. 그러면 어떻게 하냐 뭐 두 문자열로 입력받아 각 자리에 일치하는 수를 추출해서 더해주는 방식도 있겠고..(charAt()) 또 다른 여러 방법이 있겠지만.. 나는 무식해서 그런건 좀 하기 싫고 그냥 실행만 되고 최대한 짧은 코드를 좋아한다. 자바에 클래스 중에서 BigInteger를 import하여 사용하면 초 간단하게 해결할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import java.util.Scanner; import java.math.BigInteger; //baekjoon_10757_큰수 a+b publi.. 2021. 1. 7.
백준 2839번 자바 설탕 배달 [수학 1] 상근이가 총 몇봉지를 배달하는지 구하는 문제이다. 봉지는 5kg 3kg 두 종류가 있다. n킬로그랩을 입력했을 때 5, 3kg 두 봉지로 최대한 적은 봉지로 배달할 수 있게 하면 된다. 4kg 나 7kg 마냥 정확하게 5, 3kg 로 조합이 안되는 값은 -1을 출력한다. 그러면 바로 코드~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import java.util.Scanner; //baekjoon_2839_설탕배달 public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int cnt.. 2021. 1. 7.
백준 2775번 java 부녀회장이 될테야~~! <수학1> 부동산 대란에 내집 마련은 커녕 전세 월세도 힘들어지고 있는 이 시국에 무슨 거주 조건이 다단계마냥 사람들을 끌어와야 하는 거지같은 문제.... 잡소리 그만하고 풀이 들어가겠습니다. k층의 n호에 사려면 k-1층의 1호부터 n호까지 사는 사람의 합을 데려와서 살아야 한다. 그냥 단순히 끄적이면서 규칙을 찾아보도록 하자. 0층 i호에는 i명이 산다고 한다. 0층 1호 = 1명, 0층 2호 = 2명 1층 1호 = 0층 1호 = 1명 1층 2호 = 0층 1호(1) + 0층 2호(2) = 3명 1층 3호 = 0층 1호(1) + 0층 2호(2) + 0층 3호(3) 0층 1호 + 0층 2호는 1층 2호이므로 1층 2호 + 0층3호가 된다. 이런 규칙이 있다. k층 n호 = k층 n-1호 + k-1층 n호이렇게 된다.. 2020. 12. 23.
백준 10250 java ACM 호텔 [수학1] 뭔가 내용이 길지만 찬찬히 읽으면 그렇게 복잡하진 않다. h의 층과 w의 호수인 호텔에서 n번째 손님은 어느방에 들어갈 지 출력하면 된다. 조건을 보자면 먼저 엘레베이터와 가까운 방을 먼저 선호하고 그 다음엔 저층을 선호한다. (난 고층이 좋은데) 즉 101호 201호 301호 순으로 먼저 방에 들어가게 되고 102호는 201호 301호 401호 즉 1호보다 엘레베이터와 멀기 때문에 우선순위가 낮다. 먼저 1층부터 101호~H01호 먼저 다 채우고 102호~H02호 이렇게 채우면 된다. 간단하쥬? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import java.util.Scanner; //baekjoon_10250_AC.. 2020. 12. 7.
백준 2869번 java 달팽이는 올라가고 싶다 (수학1) 여기 쓰잘대기 없이 나무막대를 올라가는 달팽이가 있다. 첫 줄에 세 정수를 입력한다. A B V 낮에 A만큼 올라가고 밤에 B만큼 내려가는데 V까지 올라가야 하고 올라가면 멈춘다. 며칠이 걸릴지 구하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import java.util.StringTokenizer; import java.io.*; //baekjoon_2869_달팽이는 올라가고 싶다 public class Main{ public static void main(String[] args) throws IOException{ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.. 2020. 12. 1.
백준 1193번 java 자바 분수찾기 [수학1] 하이고... 백준 문제 정주행 좀 꾸준히 하고 싶었는데 요새 너무 정신없이 살다보니 너무 오랜만에 작성하게 되었다. 사람이 이렇게까지 게을러지는구나 느끼고 있는 요즘이다. 아무튼 본론으로 가보자. 분수가 행렬형태로 다음과 같이 주어져 있고 입력한 값 번째 위치한 분수를 지그재그 형태로 찾아가는 것이다. 뭐 문제에 다 나와 있는 있는 설명이다. 위에 화살표로 표신된 그림처럼 찾아가는 것이다. 주어진 x가 3이라면 1/2 가 출력될 것이다. 우선 코드를 봐보도록 하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 import java.util.Scanner; //baekjoon_1193_분수찾.. 2020. 11. 28.
백준 2292번 java 자바 벌집 [수학1] 1부터 70까지 벌집 모양의 방이 있다. 1부터 시작해서 1씩 증가하면서 빙글빙글 6각형의 변에 방이 추가 된다. 입력값의 방까지 가는데 드는 비용을 요구하는 프로그램이다. 2~7은 1에 닿아있어서 자신을 포함해서 2개 방을 거친다. 8~19는 2~7을 감싸고 있어서 3의 비용이 든다. 이를 이용해서 풀면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import java.util.Scanner; /* * 1 //1 * 2~7 //2 6 * 8~19 //3 12 * 20~37 //4 18 * 38~61 //5 24 * 62~70 //6 */ //baekjoon_2292_벌집 public class Main.. 2020. 10. 25.
백준 2839번 java 자바 설탕배달 (수학 1) 설탕은 3kg봉지 5kg봉지 가 있는데 n(입력)kg를 배달해야 하고 가장 적은 봉지를 들고가야 하는 알고리즘이다. 뭐 간단하게 5kg로 최대한 들고 가고 남은 것을 3kg로 들고가면 된다고 생각이 된다. 뭐 나눠 떨어졌을 때 말이지만 대충 거스름돈 비슷하다고 생각하면 될 거 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import java.util.Scanner; //baekjoon_2839_설탕배달 public class Main{ public static void main(String[] args) { //사탕은 3키로와 5키로 Scanner sc = new Scanner(System.in); int n = sc.nextIn.. 2020. 10. 17.
백준 1712번 java 자바 손익분기점 (수학 1) a = 고정비용 (임대료 등) b = 재료비(한 대 생산에 들어가는 비용) c = 판매비용 그러니까 c - b가 한 대 생산했을 때의 순 이익이다. a는 고정이므로 (c-b) 를 n번만큼 했을 때 a를 넘게 되는 순간의 n이 손익분기점 판매량인 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.util.Scanner; //baekjoon_1712_손익분기점 public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a, b, c; a = sc.nextInt(); b = sc.nextInt(); c = sc.next.. 2020. 10. 17.