백준 8단계 - 기본 수학 1

이상훈·2023년 3월 17일
0

2292번

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		int num = Integer.parseInt(bf.readLine());
		int cnt= 1;
		int A= 1;
		for (int i = 6; i>0; i+=6) {
			if (num == 1) {
				break;
			}
			cnt+=i;
			A++;

			if (cnt >= num) {
				break;
			}
		}
		System.out.println(A);
	}
}

2869번

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());
		double m = Integer.parseInt(st.nextToken());
		double n = Integer.parseInt(st.nextToken());
		double h = Integer.parseInt(st.nextToken());

		double day = (h-n) / (m-n);
		if ((h - n) % (m - n) != 0) {
			day++;
		}
		System.out.println((int) day);


	}
}
수학적 사고가...

10250번

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int num = Integer.parseInt(bf.readLine());

		for (int i = 0; i< num; i++) {
			st = new StringTokenizer(bf.readLine());
			int h = Integer.parseInt(st.nextToken());
			int w = Integer.parseInt(st.nextToken());
			int n = Integer.parseInt(st.nextToken());

			int a = n / h;
			int b = n - (a * h);
			if (b == 0) {
				b = h;
				a--;
			}
//			System.out.println(a);
//			System.out.println(b);

			if (a < 10 && a != 9) {
				a++;
				System.out.println(b+"0"+a);
			} else {
				a++;
				System.out.println(b+""+a);
			}
		}
	}
}

1193번

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner in = new Scanner(System.in);
		int X = in.nextInt();

		int cross_count = 1, prev_count_sum = 0;

		while (true) {

			// 직전 대각선 누적합 + 해당 대각선 개수 이용한 범위 판별
			if (X <= prev_count_sum + cross_count) {

				if (cross_count % 2 == 1) {	// 대각선의 개수가 홀수라면
					// 분자가 큰 수부터 시작
					// 분자는 대각선상 내의 블럭 개수 - (X 번째 - 직전 대각선까지의 블럭 개수 - 1)
					// 분모는 X 번째 - 직전 대각선까지의 블럭 개수
					System.out.print((cross_count - (X - prev_count_sum - 1)) + "/" + (X - prev_count_sum));
					break;
				}

				else {	// 대각선상의 블럭의 개수가 짝수라면
					// 홀수일 때의 출력을 반대로
					System.out.print((X - prev_count_sum) + "/" + (cross_count - (X - prev_count_sum - 1)));
					break;
				}

			} else {
				prev_count_sum += cross_count;
				cross_count++;
			}
		}
	}
}

2775번

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

		int tc = Integer.parseInt(bf.readLine());
		int[][] arr = new int[16][16];
		for (int i = 1; i<16; i++) {
			for (int j = 2; j<16; j++) {
				if (i == 1) {
					arr[i][j] = j-1;
//					System.out.print((arr[i][j] = j-1)+" ");
				} else if (j == 2) {
					arr[i][j] = 1;
//					System.out.print((arr[i][j] = 1)+" ");
				} else {
					arr[i][j] = arr[i-1][j]+arr[i][j-1];
//					System.out.print((arr[i][j] = arr[i-1][j]+arr[i][j-1])+" ");
				}
			}
//			System.out.println();
		}
		for (int i = 0; i<tc; i++) {
			int k = Integer.parseInt(bf.readLine());
			int n = Integer.parseInt(bf.readLine());

			System.out.println(arr[k+1][n+1]);
		}

	}
}

10757번

import java.math.BigInteger;
import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());

		BigInteger A = new BigInteger(st.nextToken());
		BigInteger B = new BigInteger(st.nextToken());

		A = A.add(B);

		System.out.println(A.toString());
	}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		String str_A = st.nextToken();
		String str_B = st.nextToken();
		
		// 두 개의 수 중 가장 긴 자리수 길이를 구해둠
		int max_length = Math.max(str_A.length(), str_B.length());
		
		
		int[] A = new int[max_length + 1];	// 마지막 자리수 올림이 있을 수 있으므로 +1
		int[] B = new int[max_length + 1];	// 마지막 자리수 올림이 있을 수 있으므로 +1
		
		// A 초기화 
		for(int i = str_A.length() - 1, idx = 0; i >= 0; i--, idx++) {
			A[idx] = str_A.charAt(i) - '0';	// 맨 뒤 문자부터 역순으로 하나씩 저장
		}
		
		// B 초기화
		for(int i = str_B.length() - 1, idx = 0; i >= 0; i--, idx++) {
			B[idx] = str_B.charAt(i) - '0';	// 맨 뒤 문자부터 역순으로 하나씩 저장
		}
		
		
		for(int i = 0; i < max_length; i++) {
			int value = A[i] + B[i];
			A[i] = value % 10;		// 더한 값의 10으로 나눈 나머지가 자리값이 됨
			A[i + 1] += (value / 10);	// 더한 값의 10으로 나눈 몫이 올림값이 됨
		}
		
		// A배열 역순 출력
		// 가장 높은 자리수가 0일 수도 있기 때문에 0이 아닐 경우에만 출력
		StringBuilder sb = new StringBuilder();
		if(A[max_length] != 0) {
			sb.append(A[max_length]);
		}
		
		for(int i = max_length - 1; i >= 0; i--) {
			sb.append(A[i]);
		}
		System.out.println(sb);
	}
}

0개의 댓글