[백준] 1929번 소수구하기
·
Algorithm/백준
소수구하기 문제다. 이 문제는 에라토스테네스의 체를 사용해야 하는 문제다. 우선 isNotPrime이라는 배열을 선언해준다. 이때 이 배열은 boolean타입이다.boolean 타입은 기본적으로 false로 초기화 되어있다. isNotPrime[0] = isNotPrime[1] = true; for(int i = 2; i * i 이 코드가 핵심이다. 0, 1은 소수가 아니다.그렇기 때문에 배열은 true가 된다. 2부터 for문을 돌렸을 때 i값의 제곱수에 준하거나 그보다 작은 수까지 판별하게 되는데이게 에라토스테네스의 체이다.// 2부터 n의 제곱근까지의 모든 수를 확인 그리고 그 이하의 수는 모두 판별했기 때문에 i * i 부터 보게 된다.1) 자기 자신은 소수2) 자기의 배수는 모두 소수가..
[백준] 2609번 최대공약수와 최소공배수
·
Algorithm/백준
유클리드 호제법을 안다면, 쉽게 풀 수 있다!GCD 최대공약수를 구하는 것이고LCM 최소공배수를 구하는 것이다. GCD는 2개의 방법이 있다.// while문을 사용하는 방법static int getGCD(int x, int y) { while(y != 0) { int temp = x % y; x = y; y = temp; } return x;}이 방버은 y가 0이 아니면 계속해서 반복하게 된다.y로 x를 나눈 나머지가 temp에 저장되고y는 x로 치환된다.그리고 나머지 값은 y로 치환된다. 즉, 나머지가 되는 수로 계속 나누는 것이다.// 재귀를 통해 푸는 방법public static int getGCD(int num1, int num2) { ..
[백준] 11660번 구간 합 구하기 5
·
Algorithm/백준
이거.... 이거 어떻게 풀지...?문제를 처음 본 순간 뇌정지가 왔다... 자자 정신차리고이 문제는 2차원 배열의 구간 합을 구하는 문제다. 원본 배열 arr과 합친 누적합 배열sum이 있다고 생각하고 진행하겠다. 처음에 입력받는 값이 N 그리고 M이다.N * N 짜리의 테이블을 생성한다고 생각하자음! 그러면 이중 for문을 사용하는데 다 N까지라고 생각하면 되겠구나!1. 값을 입력받는다.2. 원본 배열 안에 값을 넣는다. (이중 for문)3. 누적합 배열을 구한다.4. 구간합을 구한다. 누적합 배열을 구하는 방법은!sum[i][j] = sum[i][j - 1] - sum[i - 1][j] - sum[i - 1][j - 1] + arr[i][j] 구간합 배열을 구하는 방법은!int result = su..
[백준] 4344번 평균은 넘겠지
·
Algorithm/백준
문제를 꼼꼼히 읽어보고 사고의 흐름을 정리해보겠다.1. 2차원 배열로 풀어야하나?2. Scanner로 받아야하나 BufferedReader를 사용할까 고민이 됐다. 우선 Scanner로 받게 된다면 공백을 기준으로 데이터를 읽는 데 편리하여 코드가 직관적이고 이해하기 쉬우나 조금 느리다.그래서 기왕 하는거 BufferedReader로 받고 split함수로 나눠야겠다! 싶었다. Tokenizer를 사용해서 nextToken을 했는데 잘 안 돼서 spilit을 쓰게 됐다..ㅎ 이때, 새롭게 알게된 점이렇게 한 줄로 바꿀 수 있다! String s = br.readLine(); String[] arr = s.split(" "); ..
[코드업 기초 100제] Java 1056 ~1060 풀이
·
Algorithm/코드업
1056 : [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기import java.util.*;public class Main{ public static void main(String arg[]) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(a ^ b); }}1057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기import java.util.*;public class Main { public static void main(String arg[]) { Scanner sc = n..
[코드업 기초 100제] Java 1051 ~1055 풀이
·
Algorithm/코드업
1051 : [기초-비교연산] 두 정수 입력받아 비교하기3import java.util.*;public class Main { public static void main(String arg[]) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(b >= a ? 1 : 0); }}1052 : [기초-비교연산] 두 정수 입력받아 비교하기4import java.util.*;public class Main { public static void main(String arg[]) { Scanner sc = new S..
[코드업 기초 100제] Java 1046 ~1050 풀이
·
Algorithm/코드업
1046 : [기초-산술연산] 정수 3개 입력받아 합과 평균 출력하기import java.util.*;public class Main { public static void main(String arg[]) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); System.out.println(a + b + c); System.out.printf("%.1f", (float)(a + b + c)/3); }}1047 : [기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하..
[코드업 기초 100제] Java 1041 ~1045 풀이
·
Algorithm/코드업
1041 : [기초-산술연산] 문자 1개 입력받아 다음 문자 출력하기import java.util.*;public class Main { public static void main(String arg[]){ Scanner sc = new Scanner(System.in); char a = sc.next().charAt(0); System.out.println((char)(a + 1)); }}1042 : [기초-산술연산] 정수 2개 입력받아 나눈 몫 출력하기import java.io.*;import java.util.*;public class Main { public static void main(String arg[]) throws IOException{ BufferedReader ..
[코드업 기초 100제] Java 1036 ~1040 풀이
·
Algorithm/코드업
1036 : [기초-출력변환] 영문자 1개 입력받아 10진수로 출력하기package com.study;import java.io.*;import java.util.Scanner;public class Solution { public static void main(String arg[]){ Scanner sc = new Scanner(System.in); char a = sc.next().charAt(0); System.out.println((int)a); }}1037 : [기초-출력변환] 정수 입력받아 아스키 문자로 출력하기import java.util.Scanner;public class Main { public static void main(String arg[]){ Scanne..
[코드업 기초 100제] Java 1031 ~1035 풀이
·
Algorithm/코드업
1031 : [기초-출력변환] 10진 정수 1개 입력받아 8진수로 출력하기import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); System.out.println(Integer.toOctalString(sc.nextInt())); }}1032 : [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기1import java.io.*;import java.util.*;public class Main { public static void main(String[] args) thr..