대회 날짜 : 2024년 3월 2일
문제 수 : 11문제
등수 : 186/279
이번 대회는 시간이 너무 적었다. 이때 생활패턴이 박살 나서 대회가 9시까지인데 8시 30분에 일어났다.
BOJ 31495번. 그게 무슨 코드니.. Bronze Ⅳ
시간 제한 0.5초 / 메모리 제한 1024 MB
토카는 문자열을 출력하는 파이썬 코드를 작성하는 것에 자신감이 있었다. 어느 날 Hello, World! 를 출력해 달라는 요청을 받은 토카는 자신 있게 코드를 작성했지만, 큰따옴표를 찍지 않는 치명적인 실수로 인해 컴파일 에러를 받고 말았다!!
토카는 이로 인해 자신감을 잃어버려 문자열 출력을 멀리하고 있다. 당신은 토카의 자신감을 회복시켜 주기 위해 문자열을 입력받았을 때 정확한 문자열인지 판독하는 프로그램을 작성하고자 한다. 정확한 문자열은 문자열의 시작과 끝이 큰따옴표로 이루어져 있으며 큰따옴표를 제외한 문자가 포함되어 있는 문자열을 뜻하는 말로, 대표적으로는 "Hello, World!"가 있다. 즉, 큰따옴표로 시작하지 않거나 끝나지 않은 Dijkstra나 A"b등의 문자열은 정확한 문자열이 아니다. 이제 토카의 문자열이 정확한 문자열인지 판독하는 코드를 작성하여 보자!
나의 코드
#include <iostream>
using namespace std;
int main(){
string A;
getline(cin,A);
if (A.front()==A.back() && A.front()=='"' && A.length()>2) {
A.erase(A.begin());
A.pop_back();
cout << A;
}
else {
cout << "CE";
}
}
이 문제는 문자열이 프로그래밍 언어의 출력문에 적합한 문자열인지 확인을 해야 하는 문제다.
프로그래밍 언어의 출력문에 적합한 문자열이란 큰따옴표로 감싸져 있는 문자열이다.
문자열 A를 입력받아 첫 번째 문자와 마지막 문자가 다 큰따옴표고 길이가 2보다 크다면 올바른 문자열로 판단이 가능하다.
BOJ 31496번. 자작나무가 없소 Bronze Ⅱ
시간 제한 1초 / 메모리 제한 1024 MB
게임 "마인크래프트"를 하고 있던 토카와 그의 친구 돌돌이는 집을 짓기 위해 나무를 찾아다녔다. 돌돌이는 특히 바닥의 재질로 자작나무 목재를 사용하고 싶어서 이를 찾아다녔으나, 슬프게도 정글 지형 한복판에서 게임이 시작되었기에 한참을 돌아다녀도 자작나무를 찾을 수 없었다. 힘든 탐험에 지친 돌돌이는 집으로 겨우 귀환하여 주변의 정찰 결과를 짤막하게 읊조렸다. "음⋯ 자작나무가 없소~"
그러자 마법처럼 이름에 자작나무를 뜻하는 단어 를 포함하는 게임의 아이템들이 전부 게임 속에서 삭제되어 버렸다. 토카와 돌돌이는 게임의 아이템이 몇 개 없어도 게임을 충분히 할 수 있었지만, 이윽고 상자 속에 있던 아이템 개 중 일부의 이름에 자작나무가 포함되었다는 사실을 깨달았다. 다행히 아이템들을 잘 분류해 놓아서 쉽게 외울 수 있던 돌돌이는 상자 속 아이템의 이름과 수량을 기억하고 있었다. 이를 바탕으로 삭제된 아이템의 총수량이 몇 개인지 구해보자.
단어란 영어 소문자로만 이루어진 문자열을 말한다. 아이템 이름은 한 개 이상의 단어로 이루어져 있고, 단어와 단어는 구분자 _로 구분된다. 아이템 이름이 단어 를 포함한다는 것은, 아이템 이름을 이루는 단어들 중에 와 일치하는 단어가 있다는 뜻이다. 예를 들어 단어 가 stone일 때, stone_axe에는 가 포함되고, cobblestone에는 가 포함되지 않는다.
나의 코드
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main(){
int n,m=0;
string a;
cin >> n >> a;
while(n--){
vector<string> A;
string b,c;
int s;
cin >> b >> s;
istringstream iss(b);
while(getline(iss,c,'_')){
A.push_back(c);
}
for (int i=0;i<A.size();i++){
if (A[i]==a){
m+=s;
break;
}
}
}
cout << m;
}
이 문제는 _로 구분된 문자열에 특정 문자열이 포함되어 있는지 확인하는 문제다.
문자열 파싱으로 _로 구분한 문자열을 vector에 저장하고 그 vector에 특정 문자열이 있다면 뒤에 정수를 더해주는 방식으로 코드를 작성했다.
'Algorithm > Beakjoon' 카테고리의 다른 글
2024 상반기 전남대학교 PIMM 알고리즘 파티 (3) | 2024.03.12 |
---|---|
제4회 고려대학교 MatKor Cup : 2024 Winter/Spring (0) | 2024.03.11 |
2024 신촌지역 대학생 프로그래밍 대회 동아리 연합 겨울 대회 (SUAPC 2024 Winter) (0) | 2024.02.19 |
제3회 보라매컵 본선 Open Contest (0) | 2024.02.18 |
제2회 보라매컵 본선 Open Contest UPSOLVING (0) | 2024.02.17 |