※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27325번 문제인 3 つの箱 (Three Boxes)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/27325 

 

27325번: 3 つの箱 (Three Boxes)

長さ N の文字列 S が与えられる.S の各文字は L または R である. 1 つのボールと,ボールを入れることができる箱が 3 つある.箱には 1,2,3 と番号が付けられている. 最初,箱 1 にボー

www.acmicpc.net

지문에 주어져있는 대로 상자의 공을 옮기는 과정을 시뮬레이션해나가면서 3번 상자에 공이 들어있던 순간의 수를 세는 문제이다.

 

상자를 직접 구현하는 대신 공이 들어있는 상자의 번호를 나타내는 변수(아래의 cur)만을 이용하면 간단한 코드로 문제를 해결할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

int ans, cur = 1;
int slen;
string s;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> slen >> s;
	for (auto& l : s) {
		if (l == 'L') {
			if (cur > 1) cur--;
		}
		else {
			if (cur < 3) cur++;
			if (cur == 3) ans++;
		}
	}

	cout << ans;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27323번 문제인 長方形 (Rectangle)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/27323 

 

27323번: 長方形 (Rectangle)

整数 A, B が与えられる.縦の辺の長さが A cm,横の辺の長さが B cm である下図のような長方形の面積は何 cm2 か求めよ.

www.acmicpc.net

주어진 직사각형의 넓이는 가로와 세로의 길이를 곱하는 것으로 계산할 수 있다.

 

두 정수 A와 B를 읽어 두 수의 곱을 출력하는 코드를 작성해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int x, y;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> x >> y;
	cout << x * y;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27324번 문제인 ゾロ目 (Same Numbers)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/27324 

 

27324번: ゾロ目 (Same Numbers)

N の十の位の数字と一の位の数字が同じである場合は 1 を,そうでない場合は 0 を出力せよ.

www.acmicpc.net

주어지는 두 자리 정수(입력 제한에 따라 0으로 시작하지 않는다)의 각 자리가 같은지를 확인하는 문제이다.

 

각 자리를 문자로 읽어들이고, 두 문자가 같은 문자인지를 확인하는 것으로 문제를 해결할 수 있다. 또는 주어지는 두 자리 정수를 10으로 나눈 몫과 10으로 나눈 나머지가 같은지를 확인하는 것으로도 문제를 해결할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

char x, y;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> x >> y;
	if (x == y) cout << 1;
	else cout << 0;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27333번 문제인 JOI エディタ (JOI Editor)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/27333 

 

27333번: JOI エディタ (JOI Editor)

この例では置換は行われない.最終的に JOI Editor に書かれている文字列は joijoi であるので,joijoi を出力する.

www.acmicpc.net

'j', 'o', 'i'의 세 종류의 문자로 이루어진 문자열이 입력으로 들어올 때, 이 문자열을 앞에서부터 읽어나가며 같은 두 문자가 인접해있는 것을 발견할 때마다 그 두 문자를 대문자로 바꿔주는 문제이다.

 

위에서 서술한 내용을 그대로 구현해 문제를 해결해주자. 문자를 대문자로 바꾸는 것은 toupper함수를 이용하거나 아스키코드에서 대응되는 대소문자 사이의 코드값의 차가 일정함을 이용하는 것으로 구현할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

int slen;
string s;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> slen >> s;
	for (int i = 1; i < slen; i++) {
		if (s[i] == s[i - 1]) s[i - 1] += 'A' - 'a', s[i] += 'A' - 'a';
	}

	cout << s;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27326번 문제인 二人三脚 (Three-Legged Race)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/27326 

 

27326번: 二人三脚 (Three-Legged Race)

JOI 高校には 2N (= 2 ✕ N) 人の生徒がおり,1 から 2N までの番号が付けられている. 来月 JOI 高校では運動会が開催され,その中の競技「二人三脚」では,2N 人の生徒が N 組の 2 人組に分かれ

www.acmicpc.net

N개의 팀의 모든 선수들(총 2N명)에 대하여 각 선수의 팀 번호의 합을 계산하면 N(N+1)이 됨을 관찰하자.

 

따라서 N(N+1)에서 입력으로 주어지는 2N-1명의 팀 번호를 전부 빼는 것으로 문제의 답을 구해낼 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N;
int total;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N;
	total = N * (N + 1);
	for (int i = 1; i < N * 2; i++) {
		int x; cin >> x;
		total -= x;
	}

	cout << total;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27329번 문제인 繰り返し文字列 (Repeating String)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/27329 

 

27329번: 繰り返し文字列 (Repeating String)

IOIOIO は同じ文字列を 2 つつなげて得ることはできないので,繰り返し文字列ではない.よって No を出力する.

www.acmicpc.net

주어지는 문자열의 앞 절반과 뒤 절반이 같은지를 확인하는 문제이다.

 

문자열의 substr 메소드를 이용하면 문제를 해결하는 코드를 간단하게 작성할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

int slen;
string s;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> slen >> s;
	if (s.substr(0, slen / 2) == s.substr(slen / 2, slen / 2)) cout << "Yes";
	else cout << "No";
}
728x90

+ Recent posts