[백준 7218] Pasislėpę romėniški skaičiai (C#, C++) - soo:bak
작성일 :
문제 링크
7218번 - Pasislėpę romėniški skaičiai
설명
문자열에서 로마 숫자 1부터 12까지의 표기가 부분 문자열로 존재하는지 찾아 나열하는 문제입니다.
접근법
1부터 12까지의 로마 숫자 표기를 미리 배열에 저장합니다. 각 표기가 주어진 문자열에 포함되는지 순서대로 확인하고, 포함되면 해당 숫자를 결과에 추가합니다. 1부터 12까지 순서대로 확인하므로 결과는 자동으로 오름차순이 됩니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Text;
class Program {
static void Main() {
Console.ReadLine();
var s = Console.ReadLine()!;
var roman = new[] { "", "I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII" };
var sb = new StringBuilder();
for (var i = 1; i <= 12; i++) {
if (s.Contains(roman[i])) {
if (sb.Length > 0) sb.Append(' ');
sb.Append(i);
}
}
Console.WriteLine(sb.ToString());
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <bits/stdc++.h>
using namespace std;
typedef vector<string> vs;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
string s; cin >> s;
vs roman = { "", "I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII" };
bool first = true;
for (int i = 1; i <= 12; i++) {
if (s.find(roman[i]) != string::npos) {
if (!first) cout << ' ';
cout << i;
first = false;
}
}
cout << "\n";
return 0;
}