Algorithm/SW Expert Academy
[SWEA] 3142 영준이와 신비한 뿔의 숲
SSONGMI
2021. 2. 14. 21:41
반응형
: 뿔이 한개 달린 유니콘과 뿔이 두개 달린 트윈혼이 있다.
: N은 뿔의 수를 모두 더한 값이고, M은 유니콘과 트윈혼이 모두 합쳐서 몇마리 인지를 나타낸다.
: 연립방정식으로 이중 for문을 돌려가며 풀어도 되지만, 역행렬을 이용하면 더 쉽게 풀 수 있다.
: 우선 주어진 식을 행렬식으로 나타내면 아래와 같다.
: 2X2 정방행렬의 역행렬은 다음과 같이 나타낼 수 있다.
: 따라서 위와 같은 형식으로 앞서 구한 행렬식을 바꿔보면 다음과 같다
: 따라서 유니콘 수는 -N+2M이 되고, 트윈혼의 수는 N-M이 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
public static void main(String[] args) throws NumberFormatException, IOException {
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
st = new StringTokenizer(br.readLine());
// N개의 뿔과 M마리의 짐승
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// 역행렬 이용
// X: 유니콘 수 Y: 트윈혼 수
int X = -N + 2 * M;
int Y = N - M;
sb.append(String.format("#%d %d %d\n", tc, X, Y));
}
System.out.println(sb);
}
}
반응형