본문 바로가기

WINK-(Web & App)/알고리즘 스터디

[2025 1학기 알고리즘 스터디] 윤성욱 #3주차

반응형

11047. 동전 0

import java.util.Scanner;

public class makeZero {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int k = sc.nextInt();
        int cnt = 0;

        int[] coins = new int[n];

        for (int i = 0; i < n; i++) {
            coins[i] = sc.nextInt();
        }

        for (int i = n-1; i >= 0; i--) {

            if (coins[i] <= k){
                cnt += k / coins[i];
                k = k % coins[i];
            }
        }

        System.out.println(cnt);

    }
}

 

1541. 잃어버린 괄호

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class lostBrackets {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();

        List<String> list = new ArrayList<>();
        StringBuilder num = new StringBuilder();
        for (char c : s.toCharArray()) {
            if (c == '+' || c == '-') {
                list.add(num.toString());
                list.add(String.valueOf(c));
                num.setLength(0);
            } else {
                num.append(c);
            }
        }
        list.add(num.toString());

        int idx = 0;
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).equals("-")) {
                idx = i;
                break;
            }
        }

        if (idx == 0) {
            int sum = Integer.parseInt(list.get(0));
            for (int i = 2; i < list.size(); i += 2) {
                sum += Integer.parseInt(list.get(i));
            }
            System.out.println(sum);
        } else {
            int firstSum = Integer.parseInt(list.get(0));
            for (int i = 2; i < idx; i += 2) {
                firstSum += Integer.parseInt(list.get(i));
            }

            int secondSum = 0;
            for (int i = idx + 1; i < list.size(); i += 2) {
                secondSum += Integer.parseInt(list.get(i));
            }

            int result = firstSum - secondSum;
            System.out.println(result);
        }


    }
}

 

1931. 회의실 배정

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

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

        int n = Integer.parseInt(br.readLine());

        int[][] met_sch = new int[n][2];

        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            met_sch[i][0] = Integer.parseInt(st.nextToken());   // 시작시간
            met_sch[i][1] = Integer.parseInt(st.nextToken());   // 종료시간
        }

        // 종료 시간이 빠른 순으로 정렬, 같으면 시작 시간이 빠른 순으로 정렬
        Arrays.sort(met_sch, (o1, o2) -> {
            if(o1[1] == o2[1]) { // 종료시간이 같을 경우 시작 시간이 빠른 순
                return o1[0] - o2[0];
            }
            return o1[1] - o2[1];
        });

        int cnt = 0;
        int end = 0;

        for (int i = 0; i < n; i++) {
            if(end <= met_sch[i][0]) {
                end = met_sch[i][1];
                cnt++;
            }
        }
        System.out.println(cnt);
    }
}
반응형