728x90

BOJ 10988 팰린드롬인지 확인하기

문제

알파벳 소문자로만 이루어진 단어가 주어진다. 

이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.

팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. 

level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.

시간 제한 : 1 초 
메모리 제한 : 256 MB

입력

첫째 줄에 단어가 주어진다. 

단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

출력

첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.

예제 입력 1

level

예제 출력 1

1

예제 입력 2

baekjoon

예제 출력 2

0

풀이

s = input()
x = 1

for i in range(len(s)//2):
    if s[i] != s[-i-1]: 
        print(0)
        x = 0
        break

if x == 1: 
    print(x)
728x90
728x90

BOJ 1032 명령 프롬프트

문제

시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 

여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다.

이때 원하는 파일을 찾으려면 다음과 같이 하면 된다.

dir *.exe라고 치면 확장자가 exe인 파일이 다 나온다.

"dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 

예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 

이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다.

이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 

패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다.

그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.

시간 제한 : 2 초
메모리 제한 : 128 MB

입력

첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. 

N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다.

파일이름은 알파벳 소문자와 '.' 로만 이루어져 있다.

출력

첫째 줄에 패턴을 출력하면 된다.

예제 입력 1

3
config.sys
config.inf
configures

예제 출력 1

config????

예제 입력 2

2
contest.txt
context.txt

예제 출력 2

conte?t.txt

예제 입력 3

3
c.user.mike.programs
c.user.nike.programs
c.user.rice.programs

예제 출력 3

c.user.?i?e.programs

예제 입력 4

4
a
a
b
b

예제 출력 4

onlyonefile

풀이

n = int(input())
arr = list(input())
l = len(arr)

for i in range(n - 1):
    other = list(input())
    for j in range(l):
        if arr[j] != other[j]:
            arr[j] = '?'
            
print(''.join(arr))
728x90
728x90

BOJ 1100 하얀 칸

문제

체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 

가장 왼쪽 위칸 (0,0)은 하얀색이다. 

체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하시오.

시간 제한 : 2 초 
메모리 제한 : 128 MB

입력

첫째 줄부터 8개의 줄에 체스판의 상태가 주어진다.

‘.’은 빈 칸이고, ‘F’는 위에 말이 있는 칸이다.

출력

첫째 줄에 문제의 정답을 출력한다.

예제 입력 1

.F.F...F
F...F.F.
...F.F.F
F.F...F.
.F...F..
F...F.F.
.F.F.F.F
..FF..F.

예제 출력 1

1

예제 입력 2

........
........
........
........
........
........
........
........

예제 출력 2

0

예제 입력 3

........
..F.....
.....F..
.....F..
........
........
.......F
.F......

예제 출력 3

32

예제 입력 4

........
..F.....
.....F..
.....F..
........
........
.......F
.F......

예제 출력 4

2

풀이

import sys

input = sys.stdin.readline
board = []

for i in range(8):
  board.append(list(map(str, input())))

res = 0

for i in range(8):
  for j in range(8):
    if (i+j)%2 == 0:
      if board[i][j] == 'F':
        res += 1

print(res)

 

728x90
728x90

BOJ 1259 팰린드롬수

문제

어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다.

'radar', 'sees'는 팰린드롬이다.

수도 팰린드롬으로 취급할 수 있다. 

수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다.

121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다.

또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만,

특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자.

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다.

입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.

출력

각 줄마다 주어진 수가 팰린드롬수면 'yes', 아니면 'no'를 출력한다.

예제 입력 1

121
1231
12421
0

예제 출력 1

yes
no
yes

풀이

import sys

while True:
    input = sys.stdin.readline
    s = input().rstrip()

    if s == s[::-1] and s != '0':
        print('yes')
    elif s == '0':
        sys.exit()
    else:
        print('no')
728x90
728x90

BOJ 10808 알파벳 개수

문제

알파벳 소문자로만 이루어진 단어 S가 주어진다.

각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오.

시간 제한 : 1 초
메모리 제한 : 256 MB

입력

첫째 줄에 단어 S가 주어진다.

단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

출력

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

예제 입력 1

baekjoon

예제 출력 1

1 1 0 0 1 0 0 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0

풀이

s = str(input()) 
alphabet = {chr(x):0 for x in range(97, 123)}

for i in s:
    if i in alphabet:
        alphabet[i] = alphabet[i] +1

for j in alphabet:
    print(alphabet[j], end=' ')
728x90
728x90

BOJ 2743 단어 길이 제기

문제

알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 

단어의 길이는 최대 100이다.

출력

첫째 줄에 입력으로 주어진 단어의 길이를 출력한다.

예제 입력 1

pulljima

예제 출력 1

8

풀이

n = input()

print(len(n))
728x90
728x90

BOJ 10953 A+B - 6

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

시간 제한 : 1 초 
메모리 제한 : 256 MB

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. 

A와 B는 콤마(,)로 구분되어 있다. (0 < A, B < 10)

출력

각 테스트 케이스마다 A+B를 출력한다.

예제 입력 1

5
1,1
2,3
3,4
9,8
5,2

예제 출력 1

2
5
7
17
7

풀이

n = int(input())

for _ in range(n):
    a, b = map(int, input().split(','))
    print(a+b)

 

728x90
728x90

BOJ 11719 그대로 출력하기 2

문제

입력 받은 대로 출력하는 프로그램을 작성하시오.

시간 제한 : 1 초 
메모리 제한 : 256 MB

입력

입력이 주어진다.

입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다.

각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 있을 수도 있다.

출력

입력받은 그대로 출력한다.

예제 입력 1

    Hello

Baekjoon     
   Online Judge

예제 출력 1

    Hello

Baekjoon     
   Online Judge

풀이

while True:
    try:
        n = input()
        print(n)
    except EOFError:
        break
728x90

+ Recent posts