2026.03.09 월

권순찬·2026년 3월 9일

천천히 꾸준히

목록 보기
7/50

와 일요일에 문제는 풀었는데 글을 안 썼네. 바보같은 나..

게임_1072

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class 게임_1072 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        long x = Integer.parseInt(st.nextToken());
        long y = Integer.parseInt(st.nextToken());
        long z = (y * 100) / x;

        if (z == 99 || z == 100) {
            bw.write(-1 + "");
        }
        else {
            long left = 1;
            long right = 2000000000;
            long ans = -1;

            while (left <= right) {
                long mid = (left + right) / 2;
                long new_z = ((y + mid) * 100) / (x + mid);

                if (new_z > z) {
                    ans = mid;
                    right = mid - 1;
                } else {
                    left = mid + 1;
                }
            }
            bw.write(ans + "");
        }

        bw.flush();
        bw.close();
    }
}

처음엔 x랑 y를 1씩 올라가게끔 코드를 짰는데 시간초과가 나서 보니 아 10억이구나.. 해서 이분탐색으로 수정한 케이스.


오늘은 아침 8시부터 종설 과목 팀빌딩 및 과목 설명을 들으러 학교에 갔다.

생각보다 다들 팀부터 주제까지 야무지게 짜온거 보고 아 얼른 짜야겠다 싶었다.

끝나고는 당연히 천밥 마감됐길래 익숙한 얼굴들과 아침을 먹었다.

학교 앞에 10시 전에 문 여는곳이 이렇게 없을줄이야....

홍천식당 제육도 오랜만에 먹으니 맛있더라.

그러고 오후 정시분 다녀오고 (2인 1조 하라길래 유성이 get)

저녁엔 약속이 있어 빨리 풀고 빨리 쓰고 나가야지.

수열의합_1024

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class 수열의합_1024 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        long n = Long.parseLong(st.nextToken());
        long l = Long.parseLong(st.nextToken());
        boolean check = false;

        // n = (x * l) + (l(l-1))/2
        for(long i = l;i<=100;i++) {
            long sum = (i*(i-1))/2;

            // 음수 X, 정수 O
            if(n-sum >= 0 && (n-sum) % i == 0) {
                long x = (n-sum)/i;

                for(long j = 0;j<i;j++) {
                    bw.write((x+j) + " ");
                }

                check = true;
                break;
            }
        }

        if(!check) {
            bw.write(-1+"");
        }

        bw.flush();
        bw.close();
    }
}

수열이길래 일단 n(n-1) / 2 부터 들이박고 보니까 생각보다 금방 풀렸던 문제.

제일 작은 수 x를 찾을때까지 반복 돌려서 풀었다.

profile
아직 많이 서툰 개발자

0개의 댓글