UCPC는 '전국 대학생 프로그래밍 대회 동아리 연합 여름 대회'의 줄임말로 알려져있다. 하지만 이 줄임말이 정확히 어떻게 구성되었는지는 아무도 모른다. UCPC 2018을 준비하던 ntopia는 여러 사람들에게 UCPC가 정확히 무엇의 줄임말인지 물어보았지만, 아무도 정확한 답을 제시해주지 못했다. ntopia가 들은 몇 가지 답을 아래에 적어보았다.
ntopia는 이렇게 다양한 답을 듣고는 UCPC가 무엇의 약자인지는 아무도 모른다고 결론내렸다. 적당히 슥삭해서 UCPC를 남길 수 있으면 모두 UCPC의 약자인 것이다!
문자열이 주어지면 이 문자열을 적절히 축약해서 "UCPC"로 만들 수 있는지 확인하는 프로그램을 만들어보자.
축약이라는 것은 문자열에서 임의의 문자들을 제거하는 행동을 뜻한다. 예를 들면, "apple"에서 a와 e를 지워 "ppl"로 만들 수 있고, "University Computer Programming Contest"에서 공백과 소문자를 모두 지워 "UCPC"로 만들 수 있다.
문자열을 비교할 때는 대소문자를 구분해 정확히 비교한다. 예를 들어 "UCPC"와 "UCpC"는 다른 문자열이다. 따라서 "University Computer programming Contest"를 "UCPC"로 축약할 수 있는 방법은 없다.
그나저나 UCPC는 정말 무엇의 약자였을까? 정확히 아시는 분은 제보 부탁드립니다.
입력
첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 경우도 없다.
출력
첫 번째 줄에 입력으로 주어진 문자열을 적절히 축약해 "UCPC"로 만들 수 있으면 "I love UCPC
"를 출력하고, 만들 수 없으면 "I hate UCPC
"를 출력한다.
예제 입력
Union of Computer Programming Contest club contest
예제 출력
I love UCPC
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
const reg = /.*U.*C.*P.*C/; // U->C->P->C 순으로 존재하는지 확인
const string = input[0];
reg.test(string) ? console.log('I love UCPC') : console.log('I hate UCPC');
.*
: 앞에 어떤 문자열이든 존재 가능U.*C.*P.*C
: 문자열에서 U,C,P,C가 순서대로 존재하는지 확인📚 JavaScript 정규 표현식 문법 총정리 + 응용 예제
승환이는 팰린드롬을 좋아한다. 지금 승환이의 자동차의 주행 거리계에 100000이 적혀있다. 승환이는 1km만 더 주행을 하면 100001이 된다! 승환이는 엄청나게 흥분했다.
주행 거리계에 적혀져 있는 수가 주어졌을 때, 몇 km를 더 주행하면 팰린드롬이 되는지 구하는 프로그램을 작성하시오. 승환이는 모든 자리가 팰린드롬이 되어야 한다. 따라서, 주행 거리계에 00121인 경우에는 팰린드롬이 아니다.
입력
입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 현재 승환이의 주행 거리계에 적혀있는 수가 주어진다.이 숫자는 2자리와 9자리 사이(포함)이다. 예를 들어, 주행 거리계에 적히는 숫자의 갯수는, 입력으로 주어진 수의 숫자의 갯수와 같다. 그래서, 입력이 00456이라면, 5자리 숫자이다. 마지막 줄에는 0이 적혀있다.
출력
각 테스트 케이스에 대해서 주행 거리계의 수가 팰린드롬이 되기 위해 주행해야 하는 최소 거리를 출력한다. 만약 이미 팰린드롬이라면 0을 출력한다.
예제 입력
100000
100001
000121
00456
0
예제 출력
1
0
979
44
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
let line = 0;
let answer = '';
// 팰린드롬인지 확인
const isPalindrome = (number) => {
let [start, end] = [0, number.length - 1];
while (start < end) {
if (number[start] !== number[end]) return false;
start += 1;
end -= 1;
}
return true;
};
while (true) {
const originNum = input[line];
if (originNum === '0') break; // 마지막 줄이면 중단
let palindromNum = +originNum;
while (true) {
if (isPalindrome(palindromNum.toString().padStart(originNum.length, 0)))
break;
palindromNum += 1; // 팰린드롬이 아니라면 주행거리 1km 증가
}
answer += palindromNum - originNum + '\n';
line += 1; // 다음 테스트 케이스
}
answer = answer.trimEnd();
console.log(answer);