5월 20일부터 21일까지 무려 4개의 대회에, 27일부터 28일까지 3개의 대회에 참가했습니다(1문제씩만 푼 게 '참가했다'라고 할 수 있을 지는 모르겠지만요...).
대회 시간 동안 전부 밖에 나가 있었기 때문에, 폰코딩으로 문제를 풀 수밖에 없었습니다. IDE 그런 거 없이, 예제도 돌려보지 않고 제출했습니다. 틀렸습니다를 몇 번을 받았더라...?
28113
SCON A, AC / 4 +150
A분 뒤에 버스가 오고, B분 뒤에 지하철이 옵니다. 다만, N분 동안 지하철 승강장까지 걸어야 합니다. 그래서, 어느 쪽을 먼저 탈 수 있는지를 보면 됩니다.그리고 에디토리얼을 보고, 문제를 다시 보고 알게 된 사실이 있습니다. N \leq B이기 때문에, N은 이 문제를 푸는 데 전혀 상관이 없습니다! A와 B만 비교하면 이 문제를 풀 수 있었습니다. 제 코드는 N과 A, B를 모두 비교했지만, 그럴 필요가 없었습니다. 문제를 잘 읽자...
저는 문제를 잘못 이해해 무려 3번의 틀렸습니다를 받았습니다. 그럴 문제가 아닌데...
28114
SCON B
첫번째 팀명은 그냥 100으로 나눈 나머지를 이어 붙이면 되고, 두번째 팀명은 솔브 수 내림차순으로 정렬한 다음 성씨의 첫 글자를 이어 붙이면 됩니다. 저는 이때 밖에 나와 있었기 때문에, 이 문제를 스킵하고 대회 종료 이후 풀었습니다.
28097
PPC A, AC / 1 +8
포닉스가 공부하는 시간의 총 합에, ( N - 1 ) \times 8을 더한 뒤, 24로 나눈 몫과 나머지를 출력하면 됩니다.
a = int(input()) b = sum(map(int, input().split())) c = b + ((a-1)*8) print(f'{c//24} {c%24}')
28074
IUPC A, AC / 2 +51
모비스를 찾으면 됩니다. 주어진 문자열에서 M
, O
, B
, I
, S
가 모두 한 개 이상 존재하면 YES
를, 그렇지 않으면 NO
를 출력하면 되는 간단한 문제였는데, 제가 밖에서 폰으로 코딩을 하다가 대소문자를 잘못 쳐서... 틀렸습니다를 받았습니다. 문제를 잘 읽자 2...
28061
청정수컵 A, AC / 1 +76
각 나무에서 A - (N + 1 - i)를 구한 값의 최대값을 구하면 되는 문제입니다. for
문을 돌려서 해결했습니다.
28062
청정수컵 B, AC / 2 +109
준석이가 사탕을 몇 개 가져갈지 구하면 됩니다.
사탕들의 합이 짝수라면 그냥 합을 출력하면 됩니다. 홀수라면, 1개 이상의 홀수 사탕이 반드시 존재하기 때문에, 그 사탕을 빼고 가져가면 됩니다.
28063
청정수컵 C, AC / 2 +118
와! 동전이 복사가 된다고! 저도 이런 기계가 있었으면 좋겠습니다. 500원짜리를 복사해서 오락실에 들고 가기...
상하좌우 중 한 개를 선택한다면, 그 방향으로는 다시 선택할 필요가 없습니다. 그렇기 때문에, 정답은 반드시 4 이하입니다.
- 기계의 크기가 1이라면 동전을 복사할 필요가 없으므로 정답은 0입니다.
- 아니고, 기계의 꼭짓점에 동전이 있다면 정답은 2입니다.
- 아니고, 기계의 모서리에 동전이 있다면 정답은 3입니다.
- 아니라면 정답은 4입니다.
28135
APC A, AC / 1 +77
1부터 N까지 쭉 세주면서 50
이 포함되어있는지를 체크하면 됩니다. 숫자를 문자열로 바꿔서 문자열 안에 들어가 있는지를 확인했습니다.
28125
APC B, AC / 2 +125
일단 문자열을 받고, 테이블에 나와있는 대로 바꿔줍니다. 이때 \'
또는 \\'
의 구별에 주의해야 합니다. 저는 그렇지 않아서 틀렸습니다를 한 번 받았습니다...
그리고 바꾼 횟수와 문자열의 길이를 비교해서 절반 이상이면 문자열을 버리고 I don't understand
를 출력하면 됩니다.
28136
APC C, AC / 3 +227
1부터 N까지 보면서 다음 번 수가 작거나 같다면 원, 탁!을 수행하면 됩니다. 문제에서 오름차순이라고 말을 했길래 작은지만 검사했는데, 문제를 끝까지 읽지 않았습니다... 그리고 받은 무수한 틀렸습니다의 요청
오름차순 수열이란 뒤로 갈수록 숫자가 커지는 수열을 의미한다.
문제를 잘 읽자 3...
28086
SCSC A, RTE / 3
입력 안에 들어있는 문자열 중 / 또는 *가 있는지 검사하고, 그렇지 않으면 + 또는 -가 있는지 검사합니다. 이후, 연산자에 따라 실제로 계산을 해 보면 되는데, 파이썬은 oct, int라는 아주 좋은 도구가 있습니다. 실제로 계산한 결과를 출력하면 됩니다... 만, 어째서인지 계속 36%에서 런타임 에러가 뜹니다. 대체 왜일까요...? 파루빗토 쨩은 왜 계산하기를 거부하는 것일까요...
업데이트: 제가 작성한 코드에서, 앞자리가 음수고 연산이 뺄셈인 경우에 대한 처리를 하지 않았다는 것을 알게 되었고, 고쳤더니 맞았습니다!!를 받았습니다.
# 원래 코드 import sys i = sys.stdin.readline().strip() if '/' in i: a = i.split('/') if int(a[1], 8) == 0: print('invalid') exit(0) b = int(int(a[0], 8) // int(a[1], 8)) elif '*' in i: a = i.split('*') b = int(a[0], 8) * int(a[1], 8) elif '+' in i: a = i.split('+') b = int(a[0], 8) + int(a[1], 8) elif '-' in i: a = i.split('-') b = int(a[0], 8) - int(a[1], 8) if b < 0: print('-' + oct(abs(b))[2:]) else: print(oct(b)[2:])
28138
5월 향유회 A, TLE / 2
저는 단순히 1부터 N까지 전부 돌려 보면서 m에다가 더하는 식으로 구현했는데, 1 \leq N \leq 10^{12}입니다. N이 꽤 크기 때문에 당연히 시간 초과를 받았습니다.
jh05013님의 풀이에 의하면,
N-R을 m으로 나눈 나머지가 0이어야 합니다. 즉, m은 N-R의 약수여야 합니다. 그렇다고 다 되는 건 아니고, m이 R보다 커야 합니다. 즉, N-R의 약수 중 R보다 큰 것의 개수를 세면 됩니다. 어떤 수 X의 약수는 O(\sqrt{x}) 시간에 전부 알아낼 수 있음이 알려져 있습니다. https://www.acmicpc.net/step/18
약수를 찾으면 되겠군요. 이 문제는 나중에 천천히 풀어볼까 합니다.
이렇게 7개 대회를 찍먹해 보았습니다.