5월 31일 새벽, 꿀잠을 자고 있던 김사케는 기분 나쁜 소리에 잠을 깼습니다. 그리고 핸드폰 화면을 보니,
[서울특별시] 오늘 6시 32분 서울지역에 경계경보 발령. 국민 여러분께서는 대피할 준비를 하시고, 어린이와 노약자가 우선 대피할 수 있도록 해 주시기 바랍니다.
위급재난문자, 06:41
어...? 자세히 들어보니 바깥에서 방송이 나오고 있습니다. 뭔가 큰일이 난 게 분명했습니다. 뉴스를 켜보려고 했습니다.
안 들어가집니다. 이럴 때 쓰려고 트위터를 깔아 놨었습니다. 들어갑니다. 다들 이게 무슨 일이지 하는 트윗을 올리고 있습니다. 그와중에 뉴스가 나옵니다. 북한이 뭘 쐈답니다.
생각해보니, 6시 32분에 경계경보를 발령했고, 문자를 41분에 받았습니다. 그런데, 북한이 진짜로 전쟁을 선포하고 미사일을 쏠 거였으면, 보통 발사한 지 2~3분 이내로 서울 한복판에 도달할 것임을 알고 있었습니다. 그런데, 이미 10분이 지났다? 이건 적어도 전쟁은 아닐 것입니다. 그리고 다시 자려고 누웠습니다.
[행정안전부] 06:41 서울특별시에서 발령한 경계경보는 오발령 사항임을 알려드림
위급재난문자, 07:03
[서울특별시]북한 미사일 발사로 인해 위급 안내문자가 발송되었습니다. 서울시 전지역 경계경보해제되었음을 알려드립니다. 시민여러분께서는 일상으로 복귀하시기 바랍니다.
안전안내문자, 07:25
오발령이랍니다. 내 이럴 줄 알았지.
경계경보 문자를 자세히 보면, 아무런 내용이 없습니다. 왜 대피를 해야 하고, 어디로 대피해야 하는지에 대한 내용은 전혀 들어있지 않았습니다. 진짜로 전쟁이 나면 이러다 다 죽을 것 같습니다.
이후 서울시는 행정안전부에서 지령 방송을 받고, 우선 경계경보를 발령했으며, 이는 당연한 절차라는 보도자료를 냈습니다.
우리나라만 경보를 발령한 것은 아닙니다. 일본에서도 자국민에게 대피 문자를 발송했습니다.
북한이 발사체를 발사한 지 1분 만에, 왜 대피해야 하고, 어디로 대피해야 하는지 모두 명시가 되어 있는 문자를 발송했습니다.
우리나라의 대응은 고칠 점이 많습니다. 우리나라는 휴전 중인 국가고, 다음 번에는 실제 미사일일 수도 있으니까요.
최근 알고리즘 문제해결에 취미가 생겼습니다. 처음에는 교내 동아리에서 BOJ를 알게 되었고, 문제 해결을 하면서 solved.ac를 알게 되었습니다. 솔브드는 처음에는 서강대 학회 내에서 사용할 서비스로 만들어졌지만, 지금은 10만 명 이상의 사용자(저도 그 중 한 사람입니다)가 있는 사이트로 성장했습니다. 그리고 이제 곧 3주년을 맞이한다고 합니다. 멋진 일이 아닐 수 없습니다.
제 나름대로 여러 가지 취미를 찾기 위해 노력했고, PS는 그 중 하나가 되었습니다. 지금은 간단한 구현밖에 하지 못하지만, 언젠가는 골드나 플래티넘 문제도 해결할 날이 올 것이라고 생각합니다(2023-05-30 기준 맞았습니다!!를 받은 가장 높은 티어는 Silver III입니다). 그리고 솔브드는 제가 PS를 하는 데 있어 큰 도움이 되고 있습니다.
매일 1문제 이상을 해결하면 아래 그림과 같이 스트릭이 이어집니다. 마치 매일 출석 도장을 찍는 느낌이랄까요. 스트릭을 잇기 위해 매일 최소 1문제씩을 풀고 있습니다. 덕분에 꽤나 규칙적인 생활을 하는 느낌입니다.
남들 눈에는 별 것 아닌 것 같아 보여도 지금의 저에게는 백준과 솔브드가 일상의 큰 부분을 차지하고 있습니다. 최근에는 개인적으로나 업무적으로 좋지 않은 일들이 여럿 있었는데, 그럼에도 불구하고 가만히 누워있기만 하지 않고 어떻게든 한 걸음 나아갈 수 있게 되었습니다.
A분 뒤에 버스가 오고, B분 뒤에 지하철이 옵니다. 다만, N분 동안 지하철 승강장까지 걸어야 합니다. 그래서, 어느 쪽을 먼저 탈 수 있는지를 보면 됩니다.
그리고 에디토리얼을 보고, 문제를 다시 보고 알게 된 사실이 있습니다. N \leq B이기 때문에, N은 이 문제를 푸는 데 전혀 상관이 없습니다! A와 B만 비교하면 이 문제를 풀 수 있었습니다. 제 코드는 N과 A, B를 모두 비교했지만, 그럴 필요가 없었습니다. 문제를 잘 읽자...
모비스를 찾으면 됩니다. 주어진 문자열에서 M, O, B, I, S가 모두 한 개 이상 존재하면 YES를, 그렇지 않으면 NO를 출력하면 되는 간단한 문제였는데, 제가 밖에서 폰으로 코딩을 하다가 대소문자를 잘못 쳐서... 틀렸습니다를 받았습니다. 문제를 잘 읽자 2...
입력 안에 들어있는 문자열 중 / 또는 *가 있는지 검사하고, 그렇지 않으면 + 또는 -가 있는지 검사합니다. 이후, 연산자에 따라 실제로 계산을 해 보면 되는데, 파이썬은 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:])
N-R을 m으로 나눈 나머지가 0이어야 합니다. 즉, m은 N-R의 약수여야 합니다.
그렇다고 다 되는 건 아니고, m이 R보다 커야 합니다. 즉, N-R의 약수 중 R보다 큰 것의 개수를 세면 됩니다.
어떤 수 X의 약수는 O(\sqrt{x}) 시간에 전부 알아낼 수 있음이 알려져 있습니다. https://www.acmicpc.net/step/18