728x90

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1 복사

5

예제 출력 1 복사

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

n = int(input())
for i in range(1, n+1):
    print(" "*(n-i)+"*"*(2*i-1))
for i in range(n-1, 0, -1):
    print(" "*(n-i)+"*"*(2*i-1))
728x90
728x90

문제

영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

입력

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.

출력

첫째 줄에 단어의 개수를 출력한다.

예제 입력 1 복사

The Curious Case of Benjamin Button

예제 출력 1 복사

6

예제 입력 2 복사

 The first character is a blank

예제 출력 2 복사

6

예제 입력 3 복사

The last character is a blank 

예제 출력 3 복사

6

s = list(input().split())
print(len(s))
728x90
728x90

문제

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

출력

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.

만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.

예제 입력 1 복사

baekjoon

예제 출력 1 복사

1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

string = input()
alphabet = "abcdefghijklmnopqrstuvwxyz"
for i in alphabet:
    print(string.find(i), end = ' ')

find()는 문자열에서 특정 문자가 몇 번째에 위치해 있는지에 대한 값을 반환한다.(문자열에서만 가능하므로 리스트, 튜플과 같은 iterable 자료형에서는 index()함수를 사용해야 한다.)

찾는 문자가 없을 경우 -1을 반환한다.(index()함수는 AttributeError가 발생한다.)

728x90
728x90

문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

예제 입력 1 복사

1
1

예제 출력 1 복사

1

예제 입력 2 복사

5
54321

예제 출력 2 복사

15

예제 입력 3 복사

25
7000000000000000000000000

예제 출력 3 복사

7

예제 입력 4 복사

11
10987654321

예제 출력 4 복사

46

n = int(input())
nums = list(map(int, input()))
sum = 0
for i in range(n):
    sum += int(nums[i])
print(sum)
728x90
728x90

문제

알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.

입력

알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다.

출력

입력으로 주어진 글자의 아스키 코드 값을 출력한다.

예제 입력 1 복사

A

예제 출력 1 복사

65

예제 입력 2 복사

C

예제 출력 2 복사

67

예제 입력 3 복사

0

예제 출력 3 복사

48

예제 입력 4 복사

9

예제 출력 4 복사

57

예제 입력 5 복사

a

예제 출력 5 복사

97

예제 입력 6 복사

z

예제 출력 6 복사

122

a = input()
print (ord(a))
728x90
728x90

문제

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.

윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.

예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

입력

첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.

출력

첫째 줄에 윤년이면 1, 아니면 0을 출력한다.

예제 입력 1 복사

2000

예제 출력 1 복사

1

예제 입력 2 복사

1999

예제 출력 2 복사

0

year = int(input())

if year % 4 == 0 and (year %100 != 0 or year %400 == 0):
    print('1')
else:
    print("0")

풀이

문제에 나와있는 윤년의 조건을 그대로 썼다.

>> 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. <<

728x90
728x90

문제

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력

시험 성적을 출력한다.

예제 입력 1 복사

100

예제 출력 1 복사

A

score = int(input())

if score >= 90 :
    print('A')
elif score >= 80 :
    print('B')
elif score >= 70 :
    print('C')
elif score >= 60 :
    print('D')
else:
    print('F')

풀이

score = int(input())

우선 입력받는 숫자는 문자열로 입력되기 때문에 int 함수를 이용해서 정수로 변환하여 변수에 선언한다. 시험 점수이기 때문에 변수 이름은 score로 정해보았다.


삼항 연산자 풀이

if조건식은 삼항 연산자를 사용하여 한 줄로 표현하는 것이 가능한데 조건식이 여러 개인 경우 중첩된 삼항 연산자를 작성하여야 해서 가독성을 해치게 될 수가 있다. 이번 문제도 삼항 연산자를 작성해 보았는데 문장이 너무 길어져서 if - elif - else 조건식에 비해서 좋지 않다는 느낌을 받았다. 코드는 아래와 같다. 

print('A') if score >= 90 else print('B') if score >= 80 else print('C') if score >= 70 else print('D') if score >= 60 else print('F')
728x90
728x90

문제

두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. A와 B는 공백 한 칸으로 구분되어져 있다.

출력

첫째 줄에 다음 세 가지 중 하나를 출력한다.

  • A가 B보다 큰 경우에는 '>'를 출력한다.
  • A가 B보다 작은 경우에는 '<'를 출력한다.
  • A와 B가 같은 경우에는 '=='를 출력한다.

제한

  • -10,000 ≤ A, B ≤ 10,000

예제 입력 1 복사

1 2

예제 출력 1 복사

<

예제 입력 2 복사

10 2

예제 출력 2 복사

>

예제 입력 3 복사

5 5

예제 출력 3 복사

==

A,B = map(int,input().split())

if A > B:
    print('>')
elif A < B:
    print('<')
else:
    print('==')

풀이

1. 우선 두 수를 입력받는 코드를 작성한다.

A,B = map(int,input().split())

일단 두 개의 수를 입력받는다. 두 개의 수는 가운데에 공백을 포함한 하나의 문자열로 입력받게 된다. 이 문자열을 input 함수로 입력받고 split 함수로 나눌 때 괄호에 아무것도 입력하지 않으면 공백을 기준으로 문자를 나눌 수 있다. 그리고 map 함수를 이용해서 split 함수로 나눈 두 개의 문자를 int타입인 정수로 변환시켜 준다. 두 개의 정수는 튜플(tuple)의 성질을 이용하여 A, B 변수에 각각 선언한다. 

 

2. if - elif - else 조건식 코드를 작성한다.

if A > B:
    print('>')  # if 조건식이 참일 때 문장
elif A < B:
    print('<')  # if조건식이 참이 아닌경우 elif 조건식이 참일 때 문장
else:
    print('==')  # 위의 모든 조건이 거짓일 때 문장

if 조건식은 if 조건식만 작성할 수도 있고 if-else 조건식을 쓸 수도 있고 if - elif - else 조건식을 사용할 수도 있다. 이번 코드에선 if - elif - else 모두 사용한 조건식을 작성하였다. if 조건식 아래에는 if 조건식이 참일 때의 문장을 쓰고 elif조건식 아래에는 if 조건식이 참이 아닌 경우 elif 조건식이 참일 때의 문장을 써준다. 그리고 else 조건식에는 위의 모든 조건이 거짓일 때의 문장을 써주면 된다.  


삼항연산자를 이용한 풀이도 있다.

A,B = map(int,input().split())

print('>') if A > B else print('<') if A < B else print('==')

풀이

>> 삼항 연산자 코드로 작성하는 방법

print('>') if A > B else print('<') if A < B else print('==')

삼항 연산자 코드를 작성하면 if조건식을 한 줄로 간편하게 작성할 수 있어서 편리하다. 이번 문제는 elif 조건식이 들어가야 하기 때문에 중첩 삼항 연산자 코드로 작성했다. 중첩 삼항 연산자의 코드 작성법은 아래와 같다. 

조건식 1이 참일 때 값 if 조건식 1 else [ 조건식2가 참일 때 값 if 조건식2 else 조건식이 모두 거짓일 때 

 

728x90

+ Recent posts