3 분 소요

기초5-1(1차원 배열)의 기억력 테스트 2 문제를 메모리 문제로 계속 해결하지 못해서 구글링을 계속하며 메모리를 줄일 수 있는 방법에 대해 조사했었다. 그 문제는 결국 해결하지 못했지만, 조사하며 알게된 방법을 자주 써먹고자 한다. 그래서 input() 대신 sys.stdin.readline().rstrip()을, print() 대신 sys.stdout.write()을 사용하고 반복문 대신 comprehension과 map()을 사용했다.

1131 : 문자 출력하기

입력된 문자를 그대로 출력한다.

import sys

c = sys.stdin.readline().rstrip()

sys.stdout.write(c)
0

1132 : 문자열 출력하기

한 단어를 입력받아 출력한다.

import sys

word = sys.stdin.readline().rstrip()

sys.stdout.write(word)
0

1133 : 공백이 있는 문자열 입출력

공백이 있는 문자열을 입력받아 출력해보자.

import sys

sen = sys.stdin.readline().rstrip()

sys.stdout.write(sen)
0

1295 : 알파벳 대소문자 변환

주어지는 문장의 대문자를 소문자로, 소문자를 대문자로 변경하는 프로그램을 작성하라.

import sys

sen = sys.stdin.readline().rstrip()

ans = list(map(lambda n: n.upper() if n.islower() else n.lower(), sen))

for c in ans:
    sys.stdout.write(c)
CodeChallenge2014withMSP
cODEcHALLENGE2014WITHmsp

1406 : love

영단어 하나가 입력된다.

그 단어가 love이면 I love you. 를 출력하시오.

import sys

word = True if sys.stdin.readline().rstrip() == 'love' else False

print("I love you." if word else '')

1407 : 문자열 출력하기 1

길이(글자수)가 100이하인 문자열을 입력받아 공백을 제거하고 출력하시오.

import sys

sen = sys.stdin.readline().rstrip()

sys.stdout.write(sen.replace(' ', ''))
0

1408 : 암호 처리

인터넷 서비스들은 대부분 아이디와 패스워드(password)를 이용한다.

이때 사용되는 패스워드는 여러 가지 방법으로 암호화되어 저장된다.

[어떤 인터넷 서비스의 2가지 암호화 방법]

  • 입력받은 문자의 ASCII 코드값 + 2

  • (입력받은 문자의 ASCII 코드값 * 7) % 80 + 48

사용자의 패스워드를 2가지 방법으로 암호화한 결과를 출력하는 프로그램을 작성하시오.

import sys

pw = list(map(ord, sys.stdin.readline().rstrip()))
pw1 = list(map(lambda n: chr(n+2), pw))
pw2 = list(map(lambda n: chr((n * 7) % 80 + 48), pw))

print(*pw1, sep='')
print(*pw2, sep='')
TEST
VGUV
L3EL

1410 : 올바른 괄호 1 (괄호 개수 세기)

프로그래밍을 할 때 가장 중요한 것 중 하나가 괄호의 개수를 맞추는 것이다.

즉, 여는 괄호가 있으면 항상 닫는 괄호가 있고, 닫는 괄호가 있으면 여는 괄호도 있어야 한다.

올바른 괄호를 확인하기 위해 가장 기본적인 방법 중 하나는 여는 괄호와 닫는 괄호의 개수를 세는 것이다.

소괄호로 이루어진 문자열을 주어지면 괄호의 개수를 출력하는 프로그램을 작성하시오.

import sys

sen = sys.stdin.readline().rstrip()

print(sen.count('('), sen.count(')'))
((())()(()))
6 6

1414 : C언어를 찾아라

길이가 100 이하인 문자열로 구성된 암호문을 발견하였다.

이 암호문은 예전에 작성된 것으로 판단된다.

이 문자열에서 “C”라는 문자와 “CC”라는 문자가 몇 개 있는지 조사하고자 한다.

길이가 100 이하인 문자열을 입력받아, “C”라는 문자와 “CC”라는 문자가 각각 몇 개 존재하는지 알아내는 프로그램을 작성하시오. (단, C, CC는 대소문자를 구분하지 않는다. 즉, “cC”는 “CC”와 같다.)

import sys

sen = sys.stdin.readline().rstrip().lower()
count = 0

for i in range(len(sen)-1):
    if sen[i:i+2] == 'cc':
        count += 1

print(sen.count('c'), count)
CccCCcCCCccCVCcVcCVvCCVccVcVCc
23 16

1418 : t를 찾아라

어떤 문자열이 있을 때 문자 t의 위치를 모두 찾아 출력하시오.

import re

text = input()
for m in re.finditer('t', text):
    print(m.end(), end=' ')
test
1 4 

1419 : love 2

영어 문장이 입력된다.

그 문장에서 love가 몇 번 나오는지 출력하시오.

sen = input()

print(sen.count('love'))
love lovely
2

1733 : I.O.I

정보 선생님은 프로젝트 걸그룹 IOI를 매우 싫어 한다.

그 이유는 국제정보올림피아드(International Olympiad in Informatics:IOI)의 이름과 동일해서,

인터넷 검색창에 IOI를 입력할 경우 더 이상 국제정보올림피아드에 대한 정보를 찾기가 힘들어 졌기 때문이다.

입력으로 IOI가 입력될 경우, IOI is the International Olympiad in Informatics.를 출력하는 프로그램을 작성하시오.

만약 IOI가 아닌 다른 글자가 들어오는 경우, I don’t care.를 출력한다.

print('IOI is the International Olympiad in Informatics.' if input() == 'IOI' else "I don't care.")
IOI
IOI is the International Olympiad in Informatics.

1734 : welcome!

당신은 웹사이트 제작자이다.

ID를 입력하고 엔터를 누르면 환영 메시지를 띄우려고한다.

예를 들어 ID가 anaki 인 경우, welcome! anaki를 출력한다.

환영 메시지를 출력하는 프로그램을 작성하시오.

print("welcome! {}".format(input()))
anaki
welcome! anaki

1754 : 큰 수 비교

우리는 숫자를 int나 long long으로 숫자를 처리하였다.

이번엔 그보다 더 큰 숫자를 비교해보자.

최대 100자리의 두 숫자가 입력되면 작은수와 큰 수를 차례대로 출력하시오.

a, b = map(int, input().split())

print(b, a) if a > b else print(a, b)
1 2
1 2

1990 : 3의 배수 판별하기

자연수 n이 입력되면 3의 배수인지 아닌지 판별하시오.

print(1 if int(input()) % 3 == 0 else 0)
3321
1

2721 : 순환 문자열

영어 소문자로 구성된 단어 S1, S2, S3가 있을때,

S1의 마지막 문자가 S2의 첫 글자와 같고,

S2의 마지막 글자가 S3의 첫 글자와 같고,

S3의 마지막 글자가 S1의 첫 글자와 같으면 순환 문자열이라고 한다.

예를 들어 turtle error robot 인 경우 순환 문자열이다.

세 단어가 주어졌을 때 순환 문자열이면 good을 출력, 아니면 bad를 출력하시오.

s1 = input()
s2 = input()
s3 = input()

print("good" if s1[-1] == s2[0] and s2[-1] == s3[0] and s3[-1] == s1[0] else "bad")
turtle
error
robote
bad

댓글남기기