제주코딩베이스캠프 Python 53 ~ 60제

이하연·2020년 8월 3일
0

문제53 : 괄호 문자열

문제 : 괄호 문자열
괄호 문자열이란 괄호 기호인 '{','}','[',']','(',')' 같은 것을 말한다.
괄호 모양이 바르게 구성 된 문자열을 바른 문자열 , 그렇지 않은 문자열을 바르지 않은 문자열
바른 문자열의 예시 (()) , 바르지 않은 문자열의 예시 ()())
입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 'YES'와 'NO'로 구분된 문자열 출력해보자.

str1 = '(())'
str2 = '()())'

if str2.count('(') == str2.count(')') :
    print("YES")

else :
    print("NO")

문제54 : 연속되는 수

문제 : 연속되는 수
숫자가 공백으로 구분되어 주어지면 이 숫자가 연속수인지 아닌지 'YES'와 'NO'로 판별하는 프로그램을 작성하세요
입력

1 2 3 4 5

출력

YES

입력

1 4 2 6 3

출력

NO
inputList = list(map(int, input().split()))
count = 0
sortList = sorted(inputList)

for i in range(len(sortList)-1) :
    if 1 == abs(sortList[i]-sortList[i+1]) :
        count+=1
        continue
    else :
        count = 0
        print('NO')
        break


if count > 0 :
    print('YES')

문제55 : 하노이의 탑

문제 : 하노이의 탑


문제56 : 리스트의 함수 응용

문제 : 리스트의 함수 응용
다음의 딕셔너리가 주어졌을 때 한국의 면적과 가장 비슷한 국가와 그 차이를 출력하세요.

nationWidth = {
    'korea' : 220877,
    'Rusia' : 1709842,
    'China' : 9596961,
    'France' : 543965,
    'England' : 242900
}

tupleNation = nationWidth.items()
country = ''

for i in nationWidth :
    if i != 'korea' :
        difference = abs(nationWidth['korea'] - nationWidth[i])
        nationWidth[i] = difference

for i in tupleNation:
    if i[1] == min(nationWidth.values()):
        country = i[0]


print(country,min(nationWidth.values()))

문제57 : 내장함수 응용하기

문제 : 내장함수 응용하기
0부터 1000까지 1의 개수를 세는 프로그램을 만들려고 합니다.
예를 들어 0부터 20까지 1의 개수를 세어본다면 1,10,11,12,13,14,15,16,17,18,19에 각 1이 들어가므로 12개의 1이 있게 됩니다. 11은 1이 2번 들어간 셈이다.
그렇다면 0부터 1000까지 수에서 1은 몇번이나 들어갔을까요? 출력해주세요~

str1 = ''
for i in range(0,21) :
    str1+= str(i)

print(str1.count('1'))
str1 = str(list(range(1001)))
print(str1.count('1'))

문제58 : 콤마 찍기

문제 : 콤마 찍기
숫자를 입력 받고 천단위로 콤마(,)를 찍어주세요.
예를 들어 123456789를 123,456,789를 출력해야합니다.

  • 재귀 함수를 만들어서 풀기 (숭인도움)
num = '123456789'

def insertComma(taget) :
    if len(taget) <= 3 :
        return taget
    else :
        return insertComma(taget[:len(taget)-3]) + ',' + taget[len(taget)-3:]

print(insertComma(num))

참고)

  • insert
  1. 중복된 값 삽입 불가
  2. 최소 2개의 값 필요
  3. int값만 가능
  • append
  1. 리스트 맨 뒤에 데이터 추가
  2. 중간에 원하는 인덱스로 추가시 (객체)[(인덱스):(인덱스)]

문제59 : 빈칸채우기

문제 : 빈칸채우기
총 문자열의 길이는 50으로 제한하고 사용자가 문자열을 입력하면 그 문자열을 가운데로 정렬을 해주고, 나머지 빈부분에는 '='을 채워주세요
입력

hi

출력

=================hi=================

.format('value') 함수 이용

  • ex )
'{:=^20}'.format('hi')

출력:

=========hi=========
  1. : 이후 '=' 은 빈 공간을 채울 문자
  2. '^'은 정렬방법 (<: 좌로정렬, >: 우로 정렬, ^: 가운데 정렬)
  3. '20'은 제한할 문자열의 길이

문제60 : enumerate

문제 : enumerate
새학기가 되어 이름을 가나다 순서대로 배정하고 번호를 매기려고 합니다.
코드에 입력된 이름을 아래와 같이 출력해주세요.

studnet = ['강은','김유','박현','최성','홍유','박지','권율','김채','한지','김진','김민','강채']

for i,value in enumerate(studnet) :
    print("번호 : ",i+1,", 이름 :",value)

0개의 댓글