시뮬레이션 3

[백준 3932] Unreliable Messengers [Python]

풀이 어떤 문자가 암호화 되어 왕에게 도착하는데, 그 과정은 아래와 같다. J : 모든 문자를 왼쪽으로 회전 C : 모든 문자를 오른쪽으로 회전 E : 문자의 절반을 서로 바꿈 (문자 수가 홀수이면 가운데 문자는 냅둔다) A : 문자를 뒤집는다 P : 문자의 내용 중 숫자만 1씩 증가, 9일 경우 0이 된다. M : 문자의 내용 중 숫자만 1씩 감소, 0일 경우 9가 된다. 이러한 암호와 과정을 함수로 미리 만들어두자. 아래 코드는 문자를 전달받아 위의 암호화 과정에 따라 암호화한 문자를 반환하는 함수들이다. 이렇게 암호화된 문자가 왕에게 도착하고, 왕은 암호화된 문자를 다시 복호화해 원본 문자를 확인하고자 한다. J는 C와, P는 M과 반대로, A와 E는 그대로 유지한채 복호화를 진행해주면 된다. 복호..

[백준 27590] Sun and Moon [Python]

풀이 다음 일식이 언제 일어나는지 연도를 구하면 되는 문제다. 입력으로는 태양과 달에 대해 몇 년전에 일식이 일어나는지와, 태양과 달이 한 바퀴 공전하는데 얼마나 걸리는 지가 주어진다. 즉, 공전주기는 ys, ym이기 때문에 초기 공전은 ys - ds, ym - dm으로 계산해주어야 한다. 대소비교를 통해 공전주기를 더해주면서 일식이 일어나는(두 연도가 일치하는) 시점까지 반복문을 돌려주자. 입력은 5000년 이내에 일식이 일어나도록 주어지므로 일치 여부만 판단하면 된다. 소스코드 소스코드 보기 출처 27590번: Sun and Moon You recently missed an eclipse and are waiting for the next one! To see any eclipse from your ..

[백준 1966] 프린터 큐 [C]

풀이 우선 Test Case를 입력받아 Queue에 저장하고, 최댓값을 찾았을 때의 index가 입력받은 M과 일치하기 전까지 최댓값을 제거하고, cnt를 증가시켜주는 방식으로 풀이했다. 소스코드 #include int main(){ int T, N, M; scanf("%d", &T); while (T--){ scanf("%d %d", &N, &M); int queue[N], idx = 0, cnt = 1; for (int i = 0; i < N; i++) scanf("%d", &queue[i]); while (1){ int max = 0; for (int j = 0; j < N; j++) max < queue[j] && (max = queue[j]); while (queue[idx] != max) id..