πŸ₯‰ [Baekjoon / Java] 2460. 지λŠ₯ν˜• κΈ°μ°¨ 2

μ΄ν•˜μ–€Β·2024λ…„ 6μ›” 29일
0

🐣 λ°±μ€€

λͺ©λ‘ 보기
28/37

문제 μ„€λͺ…


πŸ’‘ Info

λ‚΄μš©

μ΅œκ·Όμ— 개발된 지λŠ₯ν˜• κΈ°μ°¨κ°€ 1λ²ˆμ—­(μΆœλ°œμ—­)λΆ€ν„° 10λ²ˆμ—­(μ’…μ°©μ—­)κΉŒμ§€ 10개의 정차역이 μžˆλŠ” λ…Έμ„ μ—μ„œ μš΄ν–‰λ˜κ³  μžˆλ‹€. 이 κΈ°μ°¨μ—λŠ” νƒ€κ±°λ‚˜ λ‚΄λ¦¬λŠ” μ‚¬λžŒ 수λ₯Ό μžλ™μœΌλ‘œ 인식할 수 μžˆλŠ” μž₯μΉ˜κ°€ μžˆλ‹€. 이 μž₯치λ₯Ό μ΄μš©ν•˜μ—¬ μΆœλ°œμ—­μ—μ„œ μ’…μ°©μ—­κΉŒμ§€ κ°€λŠ” 도쀑 κΈ°μ°¨ μ•ˆμ— μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ„ λ•Œμ˜ μ‚¬λžŒ 수λ₯Ό κ³„μ‚°ν•˜λ €κ³  ν•œλ‹€. 단, 이 κΈ°μ°¨λ₯Ό μ΄μš©ν•˜λŠ” μ‚¬λžŒλ“€μ€ μ§ˆμ„œ μ˜μ‹μ΄ νˆ¬μ² ν•˜μ—¬, μ—­μ—μ„œ 기차에 νƒˆ λ•Œ, 내릴 μ‚¬λžŒμ΄ λͺ¨λ‘ λ‚΄λ¦° 후에 기차에 탄닀고 κ°€μ •ν•œλ‹€.

예λ₯Ό λ“€μ–΄, μœ„μ™€ 같은 경우λ₯Ό μ‚΄νŽ΄λ³΄μž. 이 경우, κΈ°μ°¨ μ•ˆμ— μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ€ λ•ŒλŠ” 2λ²ˆμ—­μ—μ„œ 3λͺ…μ˜ μ‚¬λžŒμ΄ κΈ°μ°¨μ—μ„œ 내리고, 13λͺ…μ˜ μ‚¬λžŒμ΄ 기차에 탔을 λ•Œλ‘œ, 총 42λͺ…μ˜ μ‚¬λžŒμ΄ κΈ°μ°¨ μ•ˆμ— μžˆλ‹€.

이 κΈ°μ°¨λŠ” λ‹€μŒ 쑰건을 λ§Œμ‘±ν•˜λ©΄μ„œ μš΄ν–‰λœλ‹€κ³  κ°€μ •ν•œλ‹€.

κΈ°μ°¨λŠ” μ—­ 번호 μˆœμ„œλŒ€λ‘œ μš΄ν–‰ν•œλ‹€.
μΆœλ°œμ—­μ—μ„œ λ‚΄λ¦° μ‚¬λžŒ μˆ˜μ™€ μ’…μ°©μ—­μ—μ„œ 탄 μ‚¬λžŒ μˆ˜λŠ” 0이닀.
각 μ—­μ—μ„œ ν˜„μž¬ 기차에 μžˆλŠ” μ‚¬λžŒλ³΄λ‹€ 더 λ§Žμ€ μ‚¬λžŒμ΄ λ‚΄λ¦¬λŠ” κ²½μš°λŠ” μ—†λ‹€.
기차의 정원은 μ΅œλŒ€ 10,000λͺ…이고, 정원을 μ΄ˆκ³Όν•˜μ—¬ νƒ€λŠ” κ²½μš°λŠ” μ—†λ‹€.
10개의 역에 λŒ€ν•΄ κΈ°μ°¨μ—μ„œ λ‚΄λ¦° μ‚¬λžŒ μˆ˜μ™€ 탄 μ‚¬λžŒ μˆ˜κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 기차에 μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ„ λ•Œμ˜ μ‚¬λžŒ 수λ₯Ό κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

πŸ“₯μž…λ ₯ 쑰건

  • 각 μ—­μ—μ„œ λ‚΄λ¦° μ‚¬λžŒ μˆ˜μ™€ 탄 μ‚¬λžŒ μˆ˜κ°€ λΉˆμΉΈμ„ 사이에 두고 첫째 쀄뢀터 μ—΄ 번째 μ€„κΉŒμ§€ μ—­ μˆœμ„œλŒ€λ‘œ ν•œ 쀄에 ν•˜λ‚˜μ”© 주어진닀.
0 32
3 13
28 25
17 5
21 20
11 0
12 12
4 2
0 8
21 0

πŸ“€μΆœλ ₯ 쑰건

  • 첫째 쀄에 μ΅œλŒ€ μ‚¬λžŒ 수λ₯Ό 좜λ ₯ν•œλ‹€.
42


문제 이해


  • 10개의 μ—­ -> κΈ°μ°¨ λ‚΄λ¦° μ‚¬λžŒ 수, 탄 μ‚¬λžŒ μˆ˜κ°€ 주어지면 기차에 μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ„ λ•Œμ˜ μ‚¬λžŒ 수 κ³„μ‚°ν•˜κΈ°


μ•Œκ³ λ¦¬μ¦˜


μ‹€μ œ 풀이 μ‹œκ°„ : 16λΆ„

  • μž…λ ₯

    • λ‚΄λ¦° μ‚¬λžŒ μˆ˜μ™€ 탄 μ‚¬λžŒ 수 λ°°μ—΄ arr μž…λ ₯ λ°›κΈ°
      ("λ‚΄λ¦° μ‚¬λžŒ" "탄 μ‚¬λžŒ")
  • 계산

    • λ°°μ—΄μ˜ 숫자 쀑 탄 μ‚¬λžŒ - λ‚΄λ¦° μ‚¬λžŒμ„ 계산해 10개의 인원 수 비ꡐ
    • κ·Έ 숫자 쀑 κ°€μž₯ 큰 수 - κ°€μž₯ μž‘μ€ 수둜 인원 수 κ΅¬ν•˜κΈ°
  • 좜λ ₯

    • λΉ„κ΅ν•œ κ°’ 쀑 μ΅œλŒ€κ°’ 좜λ ₯ν•˜κΈ°
import java.util.*;

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

        int human = 0;
        int inTrain = 0;
        int outTrain = 0;

        int[] arr = new int[11];
        for(int i=0; i<10; i++){
            inTrain = sc.nextInt();
            outTrain = sc.nextInt();
        }

        int calHuman = human - outTrain + inTrain;

        int max = Math.max(calHuman, human);
        int min = Math.min(calHuman, human);

        System.out.println(max - min);
    }
}


μ˜€λ‹΅μ²΄ν¬


  • μ΅œλŒ“κ°’μ„ κ΅¬ν•˜λŠ” 둜직이 잘λͺ»λ˜μ—ˆμŒ.
    • 각 μ—­μ—μ„œ λ‚΄λ¦° μ‚¬λžŒμ„ λΉΌκ³  탄 μ‚¬λžŒμ„ λ”ν•΄μ„œ 남아 μžˆλŠ” μ‚¬λžŒ 수 human을 κ°±μ‹ ν•΄μ•Ό 함.
    • λ˜ν•œ, ν˜„μž¬μ˜ μ‚¬λžŒ μˆ˜μ™€ μ΅œλŒ€ μ‚¬λžŒ 수λ₯Ό 비ꡐ해 λŒ€μΉ˜ν•΄μ€˜μ•Ό 함.
//before
int calHuman = human - outTrain + inTrain;

int max = Math.max(calHuman, human);
int min = Math.min(calHuman, human);

System.out.println(max - min);
//after
int human = 0;
int maxPeople = 0;

for(int i=0; i<10; i++) {
	int inTrain = sc.nextInt();
    int outTrain = sc.nextInt();

	human = human - outTrain + inTrain;

	if (human > maxPeople) {
    	maxPeople = human;
    }
}
System.out.println(maxPeople);

  • 1μ°¨ νŠΈλŸ¬λΈ” μŠˆνŒ… ν›„ 문제

    • inTrain을 ν˜„μž¬ μ‚¬λžŒ 수인 human에 μ¦κ°€μ‹œμΌœμ£ΌλŠ” κ³Όμ •κ³Ό, outTrain을 human에 κ°μ†Œμ‹œμΌœμ£ΌλŠ” 과정이 μ—†μ–΄ 0이 좜λ ₯됨.
    • μž…λ ₯ μˆœμ„œλŠ” λ‚΄λ¦° μ‚¬λžŒ, 탄 μ‚¬λžŒμΈλ° λ°˜λŒ€λ‘œ μž…λ ₯을 λ°›μŒ.
  • λ³€κ²½

    • 증가, κ°μ†Œ μΆ”κ°€
    • μž…λ ₯ μˆœμ„œ λ³€κ²½
//after
int human = 0;
int maxPeople = 0;

for(int i=0; i<10; i++) {
	int outTrain = sc.nextInt();
    int inTrain = sc.nextInt();

	human -= outTrain;
    human += inTrain;

	if (human > maxPeople) {
    	maxPeople = human;
    }
}
System.out.println(maxPeople);


μ΅œμ’… 풀이


μ‹€μ œ 풀이 μ‹œκ°„ : 30λΆ„(μ‹€μ œ 풀이 μ‹œκ°„ 포함)

  • μž…λ ₯

    • λ‚΄λ¦° μ‚¬λžŒ μˆ˜μ™€ 탄 μ‚¬λžŒ 수 λ°°μ—΄ arr μž…λ ₯ λ°›κΈ°
      ("λ‚΄λ¦° μ‚¬λžŒ" "탄 μ‚¬λžŒ")
  • 계산

    • λ‚΄λ¦° μ‚¬λžŒ 수λ₯Ό ν˜„μž¬ μ‚¬λžŒ μˆ˜μ—μ„œ λΉΌκΈ°
    • 탄 μ‚¬λžŒ 수λ₯Ό ν˜„μž¬ μ‚¬λžŒ μˆ˜μ— λ”ν•˜κΈ°
    • ν˜„μž¬ μ‚¬λžŒ μˆ˜μ™€ μ΅œλŒ€ μ‚¬λžŒ 수λ₯Ό 비ꡐ해 더 큰 κ°’μœΌλ‘œ λŒ€μΉ˜ν•˜κΈ°
  • 좜λ ₯

    • μ΅œμ’…κ°’ maxPeople 좜λ ₯ν•˜κΈ°
import java.util.*;

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

        int human = 0;
        int maxPeople = 0;

        for(int i=0; i<10; i++) {
            int outTrain = sc.nextInt();
            int inTrain = sc.nextInt();

            human -= outTrain;
            human += inTrain;

            //human = human - outTrain + inTrain;

            if (human > maxPeople) {
                maxPeople = human;
            }
        }
        System.out.println(maxPeople);
    }
}

profile
μ–Έμ  κ°€ λ‚΄ μ½”λ“œλ‘œ 세상에 κΈ°μ—¬ν•  수 μžˆλ„λ‘, BE&Data Science 개발 기둝 λ…ΈνŠΈβ˜˜οΈ

0개의 λŒ“κΈ€