본문 바로가기

알고리즘(백준 등) 공부

SWEA 23003. 색상환

red, orange, yellow, green, blue, purple 중 주어지는 두 색의 관계를 출력하는 문제이다. 같으면 E, 인접하면 A, 마주보면 C, 아무 관계도 아니면 X를 출력한다.

 

입력을 받기 전, 색을 순서대로 Map<String, Integer> 형태로 저장하였다. 이후, 입력을 받아서 두 색이 같은지, 인접한 색인지, 마주보고 있는지, 관계 없는지 확인한다. 같은 색은 입력된 문자열이 같으며, 인접함은 두 색의 수의 차이가 1인 경우이며, 마주보는 경우는 두 색의 차이가 3인 경우이다. 그 외에는 관계가 없다.

Map<String, Integer> map = new HashMap<>();
map.put("red", 0);
map.put("orange", 1);
map.put("yellow", 2);
map.put("green", 3);
map.put("blue", 4);
map.put("purple", 5);

String a = st.nextToken(), b = st.nextToken();
if(a.equals(b)) {
    sb.append('E').append('\n');
    continue;
}
int aIndex = map.get(a), bIndex = map.get(b);
			
if((bIndex+1)%6 == aIndex || bIndex == (aIndex+1)%6) sb.append('A');
else if(bIndex == (aIndex+3)%6 || (bIndex+3)%6 == aIndex) sb.append('C');
else sb.append('X');
sb.append('\n');

 

 

결과 코드는 다음과 같다.

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

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int tc = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        Map<String, Integer> map = new HashMap<>();
        map.put("red", 0);
        map.put("orange", 1);
        map.put("yellow", 2);
        map.put("green", 3);
        map.put("blue", 4);
        map.put("purple", 5);
		
        while(tc-- > 0) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String a = st.nextToken(), b = st.nextToken();
            if(a.equals(b)) {
                sb.append('E').append('\n');
                continue;
            }
            int aIndex = map.get(a), bIndex = map.get(b);
			
            if((bIndex+1)%6 == aIndex || bIndex == (aIndex+1)%6) sb.append('A');
            else if(bIndex == (aIndex+3)%6 || (bIndex+3)%6 == aIndex) sb.append('C');
            else sb.append('X');
            sb.append('\n');
        }
        br.close();
        System.out.print(sb);
    }
}

'알고리즘(백준 등) 공부' 카테고리의 다른 글

SWEA 22795. 일곱 부하의 평균  (0) 2026.04.21
SWEA 22979. 문자열 옮기기  (0) 2026.04.20
SWEA 23005. 회문 만들기  (0) 2026.04.17
백준 1384번: 메시지  (0) 2026.04.16
SWEA 24396. 공과 상자  (0) 2026.04.15