7번 A+B - 7
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.
C++
#include <iostream>
using namespace std;
int main(){
int t;
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> t;
for (int i = 0; i < t; i++){
int a, b;
cin >> a >> b;
cout << "Case #" << i + 1 << ": " << a + b << "\n";
}
return 0;
}
C#
using System;
class Program{
static void Main(string[] args){
int t = int.Parse(Console.ReadLine());
Console.SetOut(new StreamWriter(Console.OpenStandardOutput()));
for (int i = 0; i < t; i++){
int a, b;
string input = Console.ReadLine();
string[] arr = input.Split(' ');
a = int.Parse(arr[0]);
b = int.Parse(arr[1]);
Console.WriteLine($"Case #{i+1}: {a+b}");
}
Console.Out.Flush();
}
}
Python
import sys
t = int(input());
for i in range(t):
input_str = sys.stdin.readline().rstrip()
arr = input_str.split(' ');
a = int(arr[0])
b = int(arr[1])
print(f"Case #{i+1}: {a+b}")
Node.js
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin','utf8').trim().split('\n');
const t = parseInt(input[0], 10);
const output = [];
for (let i = 1; i <= t; i++){
const[a,b] = input[i].split(' ').map(Number);
output.push(`Case #${i}: ${a+b}`);
}
console.log(output.join('\n'));
readFileSync에서 utf8로 명시적으로 인코딩해주지 않으면 반환되는 데이터가 기본적으로 Buffer 객체이므로 문자열 메서드와 함께 사용할 때 에러가 발생할 수 있다.
8번 A+B - 8
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다.
C++
#include <iostream>
using namespace std;
int main(){
int t;
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> t;
for (int i = 0; i < t; i++){
int a, b;
cin >> a >> b;
cout << "Case #" << i + 1 << ": " << a << " + " << b << " = " << a+b << "\n";
}
return 0;
}
C#
using System;
class Program{
static void Main(string[] args){
int t = int.Parse(Console.ReadLine());
Console.SetOut(new StreamWriter(Console.OpenStandardOutput()));
for (int i = 0; i < t; i++){
string input = Console.ReadLine();
string[] arr = input.Split(' ');
int a = int.Parse(arr[0]);
int b = int.Parse(arr[1]);
Console.WriteLine($"Case #{i+1}: {a} + {b} = {a+b}");
}
Console.Out.Flush();
}
}
Python
import sys
t = int(input())
for i in range(t):
input_str = sys.stdin.readline().rstrip()
arr = input_str.split()
a = int(arr[0])
b = int(arr[1])
print(f"Case #{i+1}: {a} + {b} = {a+b}")
Node.js
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin', 'utf8').trim().split('\n');
const t = parseInt(input[0], 10);
const output = [];
for (let i = 1; i <= t; i++){
const[a,b] = input[i].split(' ').map(Number);
output.push(`Case #${i}: ${a} + ${b} = ${a+b}`);
}
console.log(output.join('\n'));
7, 8번 문제들은 출력 형식만 다르고 앞에 풀었던 문제와 동일한 방식으로 해결되기 때문에 크게 설명할 내용은 없다.
9번 별 찍기 - 1
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
C++
string(size_t count, char ch)를 사용해서 count 만큼 문자를 출력하도록 만들어 본다.
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n;
for (int i = 1; i <= n; i++) {
string stars(i, '*');
cout << stars << "\n";
}
return 0;
}
C#
using System;
class Program{
static void Main(string[] args){
int n = int.Parse(Console.ReadLine());
using(StreamWriter writer = new StreamWriter(Console.OpenStandardOutput())){
for (int i = 1; i <= n; i++){
string stars = new string('*', i);
Console.WriteLine(stars);
}
}
}
}
C#은 new string(char, count)로 사용이 가능하다. 단일 문자를 반복하는 것이기 때문에 문자열이 아닌 문자를 사용해야 한다는 걸 유의한다.
기존 코드를 좀 더 깔끔하게 정리하기 위해서 using을 사용해서 내부에서 동작이 끝나면 자동으로 객체가 해제되도록 한다. 자세히 정리하자면 StreamWriter의 객체의 Dipose 메서드는 내부적으로 Flush를 호출하는데 using을 사용할 경우 객체가 해제될 때 Dispose 메서드가 자동으로 호출되면서 Flush도 처리된다. 따라서 별도로 Flush를 해줄 필요가 없어진다.
Python
n = int(input())
for i in range(1, n + 1):
stars = '*' * i;
print(stars)
파이썬은 문자에 횟수만큼 곱연산을 해서 개수만큼 표기가 가능하다.
Node.js
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin','utf8').trim();
const count = parseInt(input);
for (let i = 1; i <= count; i++){
const stars = '*'.repeat(i);
console.log(stars);
}
자바스크립트에서는 char.repeat으로 문자를 개수만큼 입력할 수 있다.
10번 별 찍기 - 2
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
9번 문제의 변형이다. N만큼 찍힌 별을 기준으로 이전 별들에게 공백이 추가로 필요하며 이 공백은 n - i 개가 된다.
C++
#include <iostream>
#include <string>
using namespace std;
int main(){
int n;
cin >> n;
for (int i = 1; i <= n; i++){
string space(n - i, ' ');
string stars(i, '*');
string result = space + stars;
cout << result << "\n";
}
return 0;
}
C#
using System;
class Program{
static void Main(string[] args){
int n = int.Parse(Console.ReadLine());
using(StreamWriter writer = new StreamWriter(Console.OpenStandardOutput())){
for (int i = 1; i <= n; i++){
string space = new string(' ', n - i);
string stars = new string('*', i);
string result = space + stars;
Console.WriteLine(result);
}
}
}
}
Python
n = int(input())
for i in range(1, n+1):
space = ' ' * (n - i);
stars = '*' * i;
result = space + stars;
print(result);
Node.js
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin', 'utf8').trim();
const n = parseInt(input);
for (let i = 1; i <= n; i++){
const space = ' '.repeat(n - i);
const stars = '*'.repeat(i);
const result = space + stars;
console.log(result);
}
'Coding Test' 카테고리의 다른 글
백준 코딩테스트 #18. 1차원 배열 (1, 2) (0) | 2024.08.03 |
---|---|
백준 코딩테스트 #17. 반복문 (11, 12) (0) | 2024.08.01 |
백준 코딩테스트 #15. 반복문 6 (0) | 2024.08.01 |
백준 코딩테스트 #14. 반복문 (4, 5) (0) | 2024.07.31 |
백준 코딩테스트 #13. 반복문 (1 ~ 3) (0) | 2024.07.29 |