백준 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. Java SE 11 설치 및 환경변수 설정 [자바설치] 세상에서 제일 제일 귀찮은게 코딩하는 것 보단 개발환경을 잡는 것이다. 매번 매번 저엉말 귀찮지만 그래도 해야지 뭐.. 자바 웹, 앱에서 두루두루 쓰이는 뭐 널리널리 쓰이는 그런 언어를 설치하고 환경변수를 잡아보자. 먼저 아래 링크를 들어간다. www.oracle.com/java/technologies/javase-downloads.html 우리는 의미만 상통하면 되니 발그림은 무시하도록하자. JDK Download를 클릭한다. 나는 버전 호환을 위해 Java SE 11을 선택했으나 원하는 버전이 있으면 맞춰서 설치하면 된다. 각자 운영체제에 맞게 받으면 된다. 나는 윈도우 64bit이므로 저걸 다운받도록 한다. installer와 Comporessed 차이는 exe 파일과 zip파일 차이다. 나는 그냥.. 2021. 2. 16. 백준 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. 이전 1 2 3 4 5 6 다음