본문 바로가기

알고리즘(백준 등) 공부

SWEA 19185. 육십갑자

N개의 문자열 리스트 S와 M개의 문자열 리스트 T를 순서대로 조합하여 1년에는 S1과 T1을 연결하고, 2년에는 S2와 T2 ... 이렇게 연결할 때,  1~2020년 사이의 특정 연도의 이름을 구하는 문제이다.

 

각 리스트 별 주기는 리스트의 크기이며 나머지 연산을 하여 연도의 이름을 구한다. 나머지가 0이면 리스트의 마지막 문자열이 된다.

String[] A = new String[n+1];
st = new StringTokenizer(br.readLine());
for(int i=1; i<=n; i++) {
    A[i] = st.nextToken();
}
String[] B = new String[m+1];
st = new StringTokenizer(br.readLine());
for(int i=1; i<=m; i++) {
    B[i] = st.nextToken();
}

int q = Integer.parseInt(br.readLine());
for(int i=0; i<q; i++) {
    int year = Integer.parseInt(br.readLine());
    int aIndex = year % n, bIndex = year % m;
    if(aIndex == 0) {
        aIndex = n;
    }
    if(bIndex == 0) {
        bIndex = m;
    }
    sb.append(A[aIndex]).append(B[bIndex]).append(' ');
}

 

 

결과 코드는 다음과 같다.

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

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());
        StringBuilder sb = new StringBuilder();

        for (int tc = 1; tc <= T; tc++) {
            sb.append('#').append(tc).append(' ');
            StringTokenizer st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken()), m = Integer.parseInt(st.nextToken());
            String[] A = new String[n+1];
            st = new StringTokenizer(br.readLine());
            for(int i=1; i<=n; i++) {
                A[i] = st.nextToken();
            }
            String[] B = new String[m+1];
            st = new StringTokenizer(br.readLine());
            for(int i=1; i<=m; i++) {
                B[i] = st.nextToken();
            }
            int q = Integer.parseInt(br.readLine());
            for(int i=0; i<q; i++) {
                int year = Integer.parseInt(br.readLine());
                int aIndex = year % n, bIndex = year % m;
                if(aIndex == 0) {
                    aIndex = n;
                }
                if(bIndex == 0) {
                    bIndex = m;
                }
                sb.append(A[aIndex]).append(B[bIndex]).append(' ');
            }
            sb.append('\n');
        }
        br.close();
        System.out.print(sb);
    }
}

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

SWEA 19004. 점프 놀이  (0) 2026.04.28
SWEA 19113. 식료품 가게  (0) 2026.04.27
SWEA 20019. 회문의 회문  (0) 2026.04.26
SWEA 20551. 증가하는 사탕 수열  (0) 2026.04.26
SWEA 20731. 서로소 그리드  (0) 2026.04.25