파이썬 문제풀이/구현

[삼성 sw 파이썬] 19185 육십갑자

ari0930 2024. 9. 5. 00:47

[삼성 sw 파이썬] 19185 육십갑자

문제

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

육십갑자 라는걸 간다히 말해서 N개의 문자열 s1, s2, ssN 과 M 개의 문자열  t1, t2, t3, , tM 있는데 

1년에 두문자열의 s1과 t1 합친 문자열을 이름으로 사용한다.자 예를 들어 s={a, b, c} , t={d, e, f, g}라 하면

year S T NAME
1 a d ad
2 b e be
3 c f cf
4 a g ag
5 b d bd
6 c e ce
7 a f af
8 b g bg
..... ..... .... .....

위의 표와 같은 형식으로 이름이 나온다.

 

두 문자열의 리스트와 Q개의 질문이 주어질때 각 질문에서 녀도로부터 만들어지는 이름을 만들면 되는 문제이다.

입력

-첫 번째 줄에는 TC가 주어진다

-각 TC의 첫번째 줄에는 N, M이  (문자열의 길이가 주어진다)

-다음줄 에는 N개의 문자열이 주어진다.

-다음줄 에는 M개의 문자열이 주어진다

-다음줄에는 Q가 주어지고

-그 다음줄 부터는 Q의 수만큼의 연도가 주어진다.

 

 

출력

 #1 sinyu imsul gyehae gapja musul gihae gyeongja

위와 같은 형식으로 출력해야한다

풀이

 

  1. 문자열 리스트 반복: 주어진 N과 M의 문자열 리스트가 자신의 길이를 초과해도 무한히 반복되어 사용된다고 가정합니다.
  2. 연도 계산: 주어진 연도에 대해, N과 M의 길이로 나머지를 구하고, 그 구한 수에서 -1을 하여 해당 배열에서 몇 번째 문자열을 사용할지 결정합니다.
  3. 이름 생성: 선택된 두 문자열을 합쳐서 해당 연도의 이름을 생성합니다.
  4. 결과 출력: 각 테스트 케이스의 결과를 출력 형식에 맞게 출력합니다.

 

코드

tc=int(input()) #테스트 케이스

for test in range(tc):
    answer="" #정답
    n,m=map(int,input().split())
    s=list(input().split())
    t=list(input().split())
    q=int(input())

    for case in range(q):
        answer+=" "
        year=int(input())
        s_year=year%n
        t_year=year%m
        answer+=s[s_year-1]+t[t_year-1]
    
    print("#{}{}".format(test+1,answer))

 

반응형