๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 1541๋ฒˆ: ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ(๊ทธ๋ฆฌ๋””)

by ์ฃผ๋ฐœ2 2020. 1. 26.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/1541

 

1541๋ฒˆ: ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ

์ฒซ์งธ ์ค„์— ์‹์ด ์ฃผ์–ด์ง„๋‹ค. ์‹์€ ‘0’~‘9’, ‘+’, ๊ทธ๋ฆฌ๊ณ  ‘-’๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ€์žฅ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋Š” ์ˆซ์ž์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ์†ํ•ด์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ , 5์ž๋ฆฌ๋ณด๋‹ค ๋งŽ์ด ์—ฐ์†๋˜๋Š” ์ˆซ์ž๋Š” ์—†๋‹ค. ์ˆ˜๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str = scan.next();
		int sum = 0;
		int minusSum = 0;
		String[] sArr1 = str.split("-");	// '-' ๊ธฐ์ค€์œผ๋กœ ์ž˜๋ผ์„œ ๋ฐฐ์—ด์— ๋‹ด๊ธฐ

		// ์ฒซ '-'๊ฐ€ ์˜ค๊ธฐ ์ „๊นŒ์ง€๋Š” ๋‹ค ๋”ํ•ด์•ผํ•จ
		String[] sArr2 = sArr1[0].split("\\+");
		
		for(String s : sArr2) {
			sum += Integer.parseInt(s);
		}
		
		// ์ฒซ '-' ์ดํ›„์˜ ์ˆซ์ž๋Š” ๋‹ค ๋”ํ•œํ›„ sum์—์„œ ๋นผ๋ฉด ์ตœ์†Ÿ๊ฐ’
		for(int i=1; i<sArr1.length; i++) {
			String[] sArr3 = sArr1[i].split("\\+");
			for(String s : sArr3) {
				minusSum += Integer.parseInt(s);
			}
		}
		
		System.out.println(sum - minusSum);
		scan.close();
	}
}

 

ํ’€์ด

์œ„ ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉฐ -๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์ˆ˜๋ฅผ ๋”ํ•˜๋ฉฐ ๋นผ์ฃผ๋Š”๊ฒŒ ์ตœ์†Ÿ๊ฐ’์ธ๊ฑธ ํŒŒ์•…ํ–ˆ์ง€๋งŒ,,

๊ตฌํ˜„์€ ๋ชปํ–ˆ๋‹ค. ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ํžŒํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํ’€์—ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ -๊ฐ€ ์˜ค๊ธฐ ์ „๊นŒ์ง€์˜ ์ˆซ์ž๋Š” ๋ชจ๋‘ ๋”ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์„ค๋ช…ํ•ด๋ณด๋ฉด ,,

 

40 + 20 - 30 - 60 + 40 - 20 + 50 ์ด๋ž€ ๋ฌธ์ž์—ด์ด ์žˆ์„๋•Œ,

 

(40+20) - 30 - (60+40) - (20+50) ์ด ๋œ๋‹ค.

1. ๋”ฐ๋ผ์„œ ๋จผ์ € ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ "-" ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๊ณ ,

2. ์ฒซ "-"๊ฐ€ ์˜ค๊ธฐ ์ „์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋Š” ๋ชจ๋‘ ๋”ํ•œ๋‹ค.

3. ๊ทธ ํ›„์—๋Š” "-"๊ฐ€ ์˜ค๊ธฐ ์ „๊นŒ์ง€์˜ ์›์†Œ๋Š” ๋ชจ๋‘ ๋”ํ•œ ํ›„ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์˜ ํ•ฉ์—์„œ ๋นผ๋ฉด ์ตœ์†Ÿ๊ฐ’์ด ๋œ๋‹ค.

 

 

 

์ฝ”๋“œ 2

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str = scan.next();
		int minSum = 0;	// ์ตœ์†Ÿ๊ฐ’
		String[] sArr = str.split("-");	// ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ "-"๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๊ธฐ.
		for(int i=0; i<sArr.length; i++) {
			String[] sArr2 = sArr[i].split("\\+"); // sArr๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ๋ฅผ "+"๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๊ธฐ.
			int sum = 0;	// sArr ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ์— ๋Œ€ํ•œ ํ•ฉ
			for(String s : sArr2) {
				sum += Integer.parseInt(s);
			}
			// ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์›์†Œ์˜ ํ•ฉ์€ - ์ด๋‹ค.
			if(i != 0) {
				sum *= -1;
			}
				minSum += sum;
		}
		scan.close();
		System.out.println(minSum);
	}

}

์œ„ ์ฝ”๋“œ๋Š” ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ๋ฐฐ์—ด์— ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€์•Š๊ณ , if๋ฌธ์„ ํ†ตํ•ด ์ฒซ๋ฒˆ์งธ์›์†Œ์™€, ๊ทธ ์™ธ ์›์†Œ์— ๋Œ€ํ•ด ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€