23003. 색상환 D3
[문제]
아래와 같은 육각 색상환을 생각해 보자.
먼저 빨강, 노랑, 파랑을 배치하고, 사이사이에는 두 색상의 물감을 섞어서 만들 수 있는 색을 넣은 것이다.
아래 그림에서 좌측 하단부터 시작해서 반시계방향으로 빨강색(red), 오렌지색(orange), 노란색(yellow), 초록색(green), 파랑색(blue), 보라색(purple)이 들어 있다.

위의 색상환에 있는 색 두 개가 주어질 때, 두 색이
- 서로 같은 색인지
- 색상환에서 인접한 (한 변을 공유하고 있는) 색인지
- 색상환에서 서로 반대에 있는 (마주보고 있는) 색인지
를 판별하는 프로그램을 작성하라.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스는 한 개의 줄로 이루어진다.
각 줄에는 두 개의 색을 나타내는 두 문자열 S와 T가 공백 하나를 사이로 두고 주어진다. S와 T는 각각 red, orange, yellow, green, blue, purple 중 하나이다.
[출력]
각 테스트 케이스마다, 하나의 줄에 주어진 두 색이
- 서로 같은 색이라면 ‘E’
- 색상환에서 인접한 (한 변을 공유하고 있는) 색이라면 ‘A’
- 색상환에서 서로 반대에 있는 (마주보고 있는) 색이라면 ‘C’
- 셋 다 아니라면 ‘X’
를 따옴표를 제외하고 출력한다.
| 입력 예제 | 출력 예제 |
| 4 red red red purple red green red yellow |
E A C X |
입력
| 4 red red red purple red green red yellow |
출력
| E A C X |
[코드]
import java.io.*;
import java.util.*;
public class Solution{
public static void main(String[] args) throws IOException{
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
int T=Integer.parseInt(br.readLine());
for (int i = 1; i <= T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String A=st.nextToken();
String B=st.nextToken();
List<String> arr = new ArrayList<>(Arrays.asList
("red", "orange", "yellow", "green", "blue", "purple"));
int A_P=arr.indexOf(A);
int B_P=arr.indexOf(B);
if(A_P==B_P) {
System.out.println("E");
}
else if(A_P-B_P==1||A_P-B_P==-1||A_P-B_P==5||A_P-B_P==-5){
System.out.println("A");
}
else if(A_P-B_P==3||A_P-B_P==-3){
System.out.println("C");
}
else {
System.out.println("X");
}
}
br.close();
}
}'SWEA(SWExpertacAdemy)' 카테고리의 다른 글
| [swea] 11736. 평범한 숫자 D3 (자바) (1) | 2025.05.18 |
|---|---|
| [swea] 13547. 팔씨름 D3 (자바) (0) | 2025.05.18 |
| [swea] 7532. 세영이의 SEM력 연도 D3 (자바) (0) | 2025.05.18 |
| [SWEA] 10200. 구독자 전쟁 D3 (자바) (1) | 2025.05.17 |
| [SWEA] 3499. 퍼펙트 셔플 D3 (자바) (0) | 2025.05.17 |