[삼성 sw 파이썬] 19185 육십갑자
문제
육십갑자 라는걸 간다히 말해서 N개의 문자열 s1, s2, s3 …, sN 과 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
위와 같은 형식으로 출력해야한다
풀이
- 문자열 리스트 반복: 주어진 N과 M의 문자열 리스트가 자신의 길이를 초과해도 무한히 반복되어 사용된다고 가정합니다.
- 연도 계산: 주어진 연도에 대해, N과 M의 길이로 나머지를 구하고, 그 구한 수에서 -1을 하여 해당 배열에서 몇 번째 문자열을 사용할지 결정합니다.
- 이름 생성: 선택된 두 문자열을 합쳐서 해당 연도의 이름을 생성합니다.
- 결과 출력: 각 테스트 케이스의 결과를 출력 형식에 맞게 출력합니다.
코드
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))
반응형
'파이썬 문제풀이 > 구현' 카테고리의 다른 글
[삼성 sw 파이썬] 3131. 100만 이하의 모든 소수 (1) | 2024.09.28 |
---|---|
[삼성 sw 파이썬] 1945 간단한 소인수분해 (1) | 2024.09.08 |
[삼성sw 파이썬] 15230 알파벳 공부 (0) | 2024.08.24 |
[삼성sw 2001 파이썬] 파리 퇴치 (0) | 2024.07.15 |
[배준 파이썬]2564 경비원 (1) | 2024.06.16 |