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

[๋ฐฑ์ค€] 5073๋ฒˆ: ์‚ผ๊ฐํ˜•๊ณผ ์„ธ ๋ณ€

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

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

 

5073๋ฒˆ: ์‚ผ๊ฐํ˜•๊ณผ ์„ธ ๋ณ€

๋ฌธ์ œ ์‚ผ๊ฐํ˜•์˜ ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๋ณ€์˜ ๊ธธ์ด์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค. Equilateral :  ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฝ์šฐ Isosceles : ๋‘ ๋ณ€์˜ ๊ธธ์ด๋งŒ ๊ฐ™์€ ๊ฒฝ์šฐ Scalene : ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๋‹จ ์ฃผ์–ด์ง„ ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ์‚ผ๊ฐํ˜•์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” "Invalid" ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 6, 3, 2๊ฐ€ ์ด ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•œ๋‹ค. ๊ฐ€์žฅ ๊ธด ๋ณ€์˜ ๊ธธ์ด๋ณด๋‹ค ๋‚˜๋จธ์ง€ ๋‘ ๋ณ€์˜ ๊ธธ์ด์˜ ํ•ฉ์ด ๊ธธ์ง€ ์•Š์œผ๋ฉด ์‚ผ๊ฐํ˜•

www.acmicpc.net

 

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	// 1)
	static int maxNum(int a, int b, int c) {
		int max = 0;
		if(a > b) {
			if(b > c)
				max = a;
			else 
				max = (a>c) ? a : c;
		}
		
		else 
			max = (b>c) ? b : c;
		return max;
	}

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		while(true) {
			int a = scan.nextInt();
			int b = scan.nextInt();
			int c = scan.nextInt();
			String result = "";
			if(a == 0 && b == 0 && c == 0)
				break;
			
			int max = maxNum(a, b, c);	// a, b, c ์ค‘ ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ
			
			// 2)
			if(a == max) {
				if(a >= b+c)
					result = "Invalid";
			}
			else if(b == max) {
				if(b >= a+c)
					result = "Invalid";
			}
			else {
				if(c >= a+b)
					result = "Invalid";
			}
			
			// 3)
			if(result == "" && a == b && b == c )
				result = "Equilateral";
			else if(result == "" && (a == b && b != c) || (a == c && b != c) || (b == c && a != b))
				result = "Isosceles";
			else if(result == "" && a != b && b != c && a != c)
				result = "Scalene";
			
			System.out.println(result);
				
			
		}
		scan.close();
	}

}

 

ํ’€์ด

 

// 1)

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ์ „๋ถ€๋‹ค ๊ตฌํ•ด์„œ ํ’€์—ˆ๋‹ค.

๋จผ์ € ์„ธ ๋ณ€์˜ ๊ธธ์ด์ค‘ ์ตœ๋Œ“๊ฐ’์„ ์ฐพ๊ธฐ์œ„ํ•ด maxNum() ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

 

    // ์„ธ ์ˆซ์ž์ค‘ ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ
	static int maxNum(int a, int b, int c) {
		int max = 0;
		if(a > b) {
			if(b > c)
				max = a;
			else 
				max = (a>c) ? a : c;
		}
		
		else 
			max = (b>c) ? b : c;
		return max;
	} 

 

a์™€ b๋ฅผ ๋น„๊ตํ•˜๊ณ , b์™€ c๋ฅผ ๋น„๊ตํ•˜๋Š” ์‹์œผ๋กœ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ–ˆ๋‹ค.

 

 

// 2)

์ตœ๋Œ“๊ฐ’์„ ์ฐพ์€ ํ›„ ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ์‚ผ๊ฐํ˜•์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•ด์ฃผ์—ˆ๋‹ค.

(๊ฐ€์žฅ ๊ธด๋ณ€ < ๋‚˜๋จธ์ง€ ๋‘ ๋ณ€์˜ ๊ธธ์ด์˜ ํ•ฉ)

 

			// 2)
			if(a == max) {
				if(a >= b+c)
					result = "Invalid";
			}
			else if(b == max) {
				if(b >= a+c)
					result = "Invalid";
			}
			else {
				if(c >= a+b)
					result = "Invalid";
			}

 

 

 

// 3)

๋งŒ์•ฝ ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ์‚ผ๊ฐํ˜•์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด, result ๋ณ€์ˆ˜๋Š” "" ๊ฐ’ ์ดˆ๊ธฐ๊ฐ’์ด๋ฏ€๋กœ ์กฐ๊ฑด์— ๋„ฃ์–ด์ค€๋‹ค.

result๊ฐ€ ""์ด๋ฉด์„œ ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ => "Equilateral"

result๊ฐ€ ""์ด๋ฉด์„œ ๋‘ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ => "Isosceles"

-> ๋‘ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™๊ณ , ๋‹ค๋ฅธ ํ•œ ๋ณ€์˜ ๊ธธ์ด์™€๋Š” ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.

result๊ฐ€ ""์ด๋ฉด์„œ ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅธ๊ฒฝ์šฐ => "Scalene"

 

			if(result == "" && a == b && b == c )
				result = "Equilateral";
			else if(result == "" && (a == b && b != c) || (a == c && b != c) || (b == c && a != b))
				result = "Isosceles";
			else if(result == "" && a != b && b != c && a != c)
				result = "Scalene";

๊ทธ ํ›„ result๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋.

 

 

๋‹ค๋ฅธ ํ’€์ด

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

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

        while (true) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            int c = Integer.parseInt(st.nextToken());

            if (a == 0 && b == 0 && c == 0)
                break;

            if ((a >= b + c) || (b >= a + c) || (c >= a + b))
                System.out.println("Invalid");
            else if (a == b && b == c)
                System.out.println("Equilateral");
            else if ((a == b) && (a != c) || (a == c) && (a != b) || (b == c) && (b != a))
                System.out.println("Isosceles");
            else if ((a != b) && (b != c) && (a != c))
                System.out.println("Scalene");
            else
                System.out.println("Invalid");
        }
    }
}

 

 

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

    	int a, b, c;
    	while(true)
    	{
    		a = scan.nextInt();
    		b = scan.nextInt();
    		c = scan.nextInt();
    		if(a == 0 && b == 0 && c == 0)
    			break;
    		if(a == b && b == c && c == a)
    			System.out.println("Equilateral");
    		else if(a + b <= c || a + c <= b || b + c <= a)
    			System.out.println("Invalid");
    		else if(a == b || b == c || c == a)
    			System.out.println("Isosceles");
    		else
    			System.out.println("Scalene");
    	}
    }
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€