백준

[백준] 브론즈Ⅴ : 3003번

제에엔 2024. 3. 20. 02:41

백준 풀고 기록 남기기 시작!!

사용 안 한지 오래된 언어가 많아서 쉬운 것부터 시작해보기로 했다. 까먹은 것도 많아서 복습 겸 ..

 


 

체스는 총 16개의 피스를 사용한다.

: 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개

Q. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.

입력 :
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.

출력 :
첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.

 

1. Python

def result():
    answer = ""
    original = [1,1,2,2,2,8]
    string = input()
    num = string.split()
    for i,j in zip(original,num):
        answer += (str((i-int(j))) + " ")
    return answer

print(result().rstrip())

 

1. 사용자로부터 입력 받기

파이썬에서는 `input()` 함수를 통해 사용자로부터 입력을 받는다.

 

2. 문자열 쪼개기

  • "문자열".split()
  • "문자열".split('구분자')
  • "문자열".split('구분자', 분할횟수)
  • "문자열".split(sep='구분자', maxsplit=분할횟수)

여기서 sep 파라미터는 문자열을 자르는 기준이다. 디폴트 값은 none이고, 이때 엔터를 구분자로 나눈다.

maxsplit 파라미터는 분할회수를 나타내는데, 디폴트 값은 -1이다. 이때, 분할 횟수의 제한 없이 나눌 수 있다.

 

3. for 문에서 변수 여러개 사용하기

  • enumerate(범위, 시작지점)
list = ['a', 'b', 'c']

for index, element in enumerate(list):
    print(index, element)

시작 지점을 지정하지 않으면 0부터 시작한다. index는 0, 1, 2가 순서대로 들어가고 element에는 'a', 'b', 'c'가 순서대로 들어간다.

시작 지점을 1로 지정하면 index에는 1, 2, 3 값이 순서대로 들어간다.

  • zip(list1, list2)
abc = ['a', 'b', 'c']
num = [1, 2, 3]

for i, j in zip(abc, num):
    print(i, j)

리스트 2개를 인자로 넣어 각각 순서대로 출력한다.

 

4. 타입 변환하기

  • int("1")
  • str(1)

변환하려는 값을 인자로 전달한다.

 

5. 공백 제거하기

  • "문자열".replace("제거할 문자", "대체할 문자")
  • "문자열".strip() : 양쪽 공백 제거
  • "문자열".lstrip() : 왼쪽 바깥 공백 제거
  • "문자열".rstrip() : 오른쪽 바깥 공백 제거

 

2. Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws Exception {
        int[] original = { 1, 1, 2, 2, 2, 8 };
        Scanner scan = new Scanner(System.in);
        String input = scan.nextLine();
        String[] nums = input.split(" ");
        String answer = "";

        for (int i = 0; i < original.length; i++) {
            answer += Integer.toString(original[i] - Integer.parseInt(nums[i])) + " ";
        }

        scan.close();
        System.out.println(answer);
    }
}

 

1. 사용자로부터 입력 받기

Scanner scan = new Scanner(System.in);

스캐너 객체를 선언한 후 사용한다.

  • scan.next() : 기본적으로 공백을 기준으로 입력받는다.
  • scan.nextLine() : 엔터를 기준으로 입력받는다.
  • scan.nextInt() : int 타입으로 입력받는다.
  • scan.nextDouble() : double 타입으로 입력받는다.

이 외에도 다른 타입으로도 입력 받을 수 있다.

 

2. 문자열 쪼개기

input.split(" ")
파이썬과 마찬가지로 문자열을 나눌 기준을 인자로 전달한다.

 

3. 타입 변환하기

Integer.toString() : int 타입을 String으로 변환한다.

Integer.parseInt() : String 타입을 int로 변환한다.

 


 

C언어랑 C++도 복습해보고 싶었는데 정말 다 까먹은 것 같다.. ㅠㅠ 조금씩 공부해야겠다.

'백준' 카테고리의 다른 글

[백준] 브론즈Ⅲ : 2566번  (0) 2024.03.31
[백준] 브론즈Ⅲ : 2738번  (0) 2024.03.31
[백준] 브론즈Ⅴ : 10869번  (0) 2024.03.30
[백준] 브론즈Ⅴ : 1000번  (1) 2024.03.30
[백준] 브론즈Ⅲ : 10988번  (0) 2024.03.20