Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
관리 메뉴

으하하 공부일기

[SWEA] - 3142. 영준이와 신비한 뿔의 숲 (D3) 본문

SWEA/D3

[SWEA] - 3142. 영준이와 신비한 뿔의 숲 (D3)

0으하하0 2022. 5. 9. 22:30

[문제]

영준이는 신비한 짐승들이 살고 있는 뿔의 숲을 지나왔다.
이 숲에는 뿔이 한 개 달린 유니콘과 뿔이 두 개 달린 트윈혼이 살고 있다.
영준이는 n개의 뿔과 m마리의 짐승을 보았다.
영준이가 본 유니콘의 수와 트윈혼의 수는 몇 마리일까?
만약 영준이가 5개의 뿔과 3마리의 짐승을 봤다면, 아래 그림과 같이 유니콘 1마리와 트윈혼 2마리였을 것이다.


[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스마다 첫 번째 줄에 두 정수 n, m (1 ≤ n ≤ 300, m ≤ n ≤ 2m)이 공백으로 구분되어 주어진다.

[출력]
각 테스트 케이스마다 영준이가 본 유니콘의 수와 트윈혼의 수를 공백으로 구분하여 출력한다.

문제 풀기

3142. 영준이와 신비한 뿔의 숲

 


[풀이]

☝ 연립방정식을 이용하여 풀이

  • 유니콘이 x, 트윈혼이 y 마리라면 마리수의 총 합은 (x+y)가 되고 뿔 수의 총 합은 (x+2y) 이므로
    x + y = m, x + 2y = n 으로, 트윈혼(y) 는 n-m마리 유니콘(x)은 (2m-n) 마리가 된다.
import java.util.Scanner;

class Solution {	
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		
		int t = sc.nextInt();
		
		for(int tc=1; tc<=t; tc++) {
			int n = sc.nextInt();
			int m = sc.nextInt();
			
			int x = (2 * m) - n;
			int y = n - m;
			
			System.out.format("#%d %d %d\n", tc, x, y);
		}
	}
}

 

✌ 반복문을 통한 풀이

  • 유니콘이 (i) 마리라고 한다면 트윈혼은 (m-i) 마리인것을 이용하여 반복문을 통해 풀이
import java.util.Scanner;

class Solution {	
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		
		int t = sc.nextInt();
		
		for(int tc=1; tc<=t; tc++) {
			int n = sc.nextInt();
			int m = sc.nextInt();
			
			int sum = 0;
			
			for(int i=0; i<=m; i++) {
				sum = 2 * i + (m-i);
				if(sum == n) System.out.format("#%d %d %d\n", tc, m-i, i);
			}
			
		}
	}
}