Python/BaekJoon

[Baekjoon] 다시 풀어볼 문제들

kyra 2022. 10. 5. 22:14

1. 2442번: 별 찍기 - 5 / 대칭 별찍기

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

 

2442번: 별 찍기 - 5

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

import sys
input = sys.stdin.readline

a = int(input())
for i in range(1, a+1):
    print(' '*(a-i)+'*'*(2*i-1))

 

2. 2443번 : 별 찍기 - 6 / 역삼각형 별찍기

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

 

2443번: 별 찍기 - 6

첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

import sys
input = sys.stdin.readline

a = int(input())
for i in range(a, 0, -1):
    print(' '*(a-i)+'*'*(2*i-1))

 

3. 2798번 : 블랙잭 

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

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

import sys
input = sys.stdin.readline
n, m = map(int, input().split())
a = list(map(int, input().split()))
res = 0

for i in range(n-2):
    for j in range(i+1, n-1):
        for k in range(j+1, n):
            if res < a[i] + a[j] + a[k] <= m:
                res = a[i] + a[j] + a[k]

print(res)

 

4. 최댓값(2차원 배열)

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

 

2566번: 최댓값

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

www.acmicpc.net

import sys
input = sys.stdin.readline

val = -1
idx = [0, 0]

for i in range(2):
    a = list(map(int, input().split()))

    for j in range(9):
        if val < a[j]:
            val = a[j]
            idx = [i+1, j+1]

print(val)
print(*idx)

^ 리스트 사용하지 않은 방법

 

import sys
input = sys.stdin.readline

a = []

for i in range(9):
    b = list(map(int, input().split()))
    a. append(b)

val = a[0][0]
idx = [1, 1]

for i in range(9):
    for j in range(9):
        if val < a[i][j]:
            val = a[i][j]
            idx = [i+1, j+1]

print(val)
print(*idx)

^리스트에 저장 후 사용

 

5. 카이사르 암호 (아스키코드)

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

 

5598번: 카이사르 암호

가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건

www.acmicpc.net

import sys
input = sys.stdin.readline

a = input().rstrip()
b = ''
for i in a:
    c = ord(i) - 3
    if c < ord('A'):
        c += 26
    b += chr(c)
print(b)

 

6. Score

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

 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

* 풀이 과정

res = 출력할 최종 점수

v = 연속 된 경우 추가로 받아야 하는 점수

 

t = int(input())

for i in range(t):
    k = input().rstrip()
    score = 0
    bonus = 0

    for x in k:
        if x == 'O':
            bonus += 1 #연속된 O의 값을 계속 더하기
        else:
            bonus = 0
        
        score += bonus
    print(score)

 

7. 체스판

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

 

1100번: 하얀 칸

체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램

www.acmicpc.net

a = []

for i in range(8):
    b = input().rstrip()
    a.append(b)

res = 0

for i in range(8):
    for j in range(8):
        if a[i][j] == '.':
            continue
        if (i % 2 == 0 and j % 2 == 0) or (i % 2 == 1 and j % 2 == 1):
            res += 1
print(res)