전체 글

전체 글

    백준 2839번[수학] 설탕 배달

    1) Buffered를 사용한 풀이 ● 자세한 풀이는 주석 참조 import java.io.*; public class Baek_2839 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int cnt = 0; // 킬로그램이 3 이상일 때만 while문 작동 // 조건에서도 3 n) { System.out.println(-1); } else { System.out.println(cnt); } } }

    백준 2775번[수학] 부녀회장이 될테야

    1) 2차원 배열을 사용한 탐색으로 풀이 ● 2차원 배열과 이중 for문을 이용해 몇 명이 사는지 계산해주고, 입력받은 k와 n을 배열에 대입해 출력했다. ● arr[0][i] = i을 통해 0층의 1 ~ 14 호까지 1 ~ 14 값을 넣어주고, arr[i][1] = 1 을 통해 몇 층이든 관계없이 한 명만 거주하고 있기 때문에 1값을 넣어 초기화 시켜주었다. ● 몇 층에 관계없이 1 호에는 한 명만 거주한다라는 말은 즉, 값을 넣어줄 때 102호, 202호, 302호 ..(중략) 부터 찾아서 값을 넣어주면 된다는 뜻이다. ● 따라서 이중 for문 (i=1, j=2)을 사용해 빈 값을 찾아 넣어준다. - "A층의 B호에 살기 위해선 자신의 아래 (A-1)층의 1호부터 B호까지 사람들의 수를 합한 것 만큼..

    백준 10250번[수학] ACM 호텔

    1) Buffered를 이용한 풀이 ● 문제를 잘 읽어보면, 손님들은 엘리베이터와 가까운 101호 ~ 601호, 102호 ~ 602호 ..(중략) 순으로 방을 선호하고 그에 맞게 방을 배정하면 된다. ● 꼭대기 층인 경우와 아닌 경우를 나누고 그에 맞는 수학 공식을 사용해서 풀이했다. import java.io.*; import java.util.StringTokenizer; public class Baek_10250 { public static void main(String args[]) throws IOException { StringTokenizer st; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int te..

    백준 2869번[수학] 달팽이는 올라가고 싶다

    1) 처음 푼 방법 (반복문 사용) ● 시간제한을 보지 않고 반복문을 사용했더니 시간 초과가 났다. ● 입력값에 대한 출력 자체는 맞게 나오지만 시간이 초과돼기 때문에 수학 공식을 만들어서 풀어야한다. import java.util.Scanner; public class Baek_2869 { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); // 낮에 올라갈 수 있는 a미터 변수 int b = sc.nextInt(); // 밤에 미끄러지는 b미터 변수 int v = sc.nextInt(); // 나무의 높이 변수 int sum = 0; // 달팽이가 올라가고 미끄러진 후 다음날..

    백준 1712번[수학] 손익분기점

    1) Buffered를 이용한 풀이 ● 변수 설정 가. 고정비용을 나타내는 fixed 나. 가변비용을 나타내는 variable 다. 제품가격을 나나내는 price ● 시간초과 주의 - 이 문제는 시간 제한이 0.35초로 굉장히 빡세다. Scanner로 풀거나 반복문으로 풀면 십중팔구 시간이 모자르기 때문에 효율적인 수학 공식으로 풀어내야 한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException..

    백준 2292번[수학] 벌집

    1) Buffered를 이용한 풀이 ● 변수 설정 가. 입력받을 숫자 n 나. 벌집을 층수로 표현하기 위한 floor - 1은 1층, 2 ~ 7은 2층, 8 ~ 19는 3층, 20 ~ 37은 4층.. (중략) 다. 해당 층 까지 최대 범위를 표현하기 위한 max - 1층의 Max는 1, 2층은 3, 3층은 19, 4층은 37 .. (중략) import java.io.*; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLin..

    백준 1193번[수학] 분수찾기

    1) Buffered를 이용한 풀이 ● 변수 설정 가. 입력받을 수 N 나. 몇 번째 대각선인지 나타내주는 T - 첫 번째 대각선부터 시작하기 때문에 1로 초기화 다. 해당 대각선까지의 모든 원소 갯수 Max (T=3이라면, T=1 ~3 까지 모든 원소는 6개, 즉 MAX = 6) - 첫 번째 대각선의 원소 갯수는 1이기 때문에 1로 초기화 ● top과 bot 값을 구해주는 식은 노가다로 찾아냈다... - 테스트 케이스 3개 정도를 참고해서 비교해가며 찾았다. - 사용가능한 변수 T, N, Max가 3개였기 때문에 가능했던 것 같다. import java.io.*; public class baek_1193 { public static void main(String args[]) throws IOExcep..

    백준 1316번[문자열] 그룹 단어 체커

    1) 메소드를 만들어서 호출하는 방식으로 풀이 import java.util.Scanner; public class Back_1316_re { static Scanner sc = new Scanner(System.in); public static void main(String args[]) { int count = 0; int n = sc.nextInt(); for (int i = 0; i < n; i++) { if (check() == true) { count++; } } System.out.println(count); } public static boolean check() { boolean[] check = new boolean[26]; // 알파벳 배열반큼 생성 int prev = 0; // 이전..

    백준 2941번[문자열] 크로아티아 알파벳

    1) Scanner, if - else if를 이용한 풀이 ● 조건문을 제대로 적지 않아 StringIndexOutOfBoundsException이 계속해서 발생해서 애를 먹었다.. ● 인터넷에서 여러가지 반례를 찾아 예외를 찾아낼 수 있어서 i < str.length - 1과 같은 조건문을 새로 추가해주었다. mport java.util.Scanner; public class Back_2941 { public static void main(String args[]) { Scanner sc = new Scanner(System.in); String str = sc.next(); int count = 0; for (int i = 0; i < str.length(); i++) { /* abc 라는 문자는 l..

    백준 5622번[문자열] 다이얼

    1) swich - case문을 이용한 풀이 ● 반복문 내에 switch - case 문을 넣어서 입력받은 문자가 어느 문자에 해당하는지 검사하는 방식으로 풀이했다. import java.util.Scanner; public class Back_5622 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); int count = 0; // 입력받은 문자의 길이만큼 탐색 for (int i = 0; i < str.length(); i++) { // case에 해당되는 문자가 있다면 ? switch (str.charAt(i)) { case 'A': case 'B': case 'C..