코딩도장 파이썬 심사문제 # 4

chaerin·2021년 1월 9일
0

PYTHON

목록 보기
8/17
post-thumbnail

25.8 딕셔너리에서 특정 값 삭제하기

표준 입력으로 문자열 여러 개와 숫자 여러 개가 두 줄로 입력되고, 첫 번째 줄은 키, 두 번째 줄은 값으로 하여 딕셔너리를 생성합니다. 다음 코드를 완성하여 딕셔너리에서 키가 'delta'인 키-값 쌍과 값이 30인 키-값 쌍을 삭제하도록 만드세요.

입력
alpha bravo charlie delta
10 20 30 40
결과
>>> {'alpha': 10, 'bravo': 20}
입력
alpha bravo charlie delta echo foxtrot golf
30 40 50 60 70 80 90
결과
>>> {'bravo': 40, 'charlie': 50, 'echo': 70, 'foxtrot': 80, 'golf': 90}

point ✅

  • for문과 if문을 사용하여 키가 'delta'가 아니고 값이 30이 아닌 키-값들을 할당해준다.
  • 키가 'delta'인 키-값 쌍을 삭제하라고 했으므로 del x['delta'] 또는 x.pop('delta')로 키-값 쌍을 삭제한다.

26.9 공약수 구하기

표준 입력으로 양의 정수 두 개가 입력됩니다. 다음 소스 코드를 완성하여 두 숫자의 공약수를 세트 형태로 구하도록 만드세요. 단, 최종 결과는 공약수의 합으로 판단합니다.

입력
10 20
결과
>>> 18
입력
100 200
결과
>>> 217

point ✅

  • 교집합 구하기 a & b
  • 약수 세트는 특정 숫자(x, y)를 1부터 특정 숫자(x, y)까지 나눈 뒤 나머지가 0인 값
    a = {i for i in range(1, x + 1) if x % i == 0}
    b = {i for i in range(1, y + 1) if y % i == 0}

27.6 특정 문자가 들어있는 단어 찾기

문자열이 저장된 words.txt 파일이 주어집니다(문자열은 한 줄로 저장되어 있습니다). words.txt 파일에서 문자 c가 포함된 단어를 각 줄에 출력하는 프로그램을 만드세요. 단어를 출력할 때는 등장한 순서대로 출력해야 하며 ,(콤마)와 .(점)은 출력하지 않아야 합니다.

words.txt
Fortunately, however, for the reputation of Asteroid B-612, a Turkish dictator made a law that his subjects, under pain of death, should change to European costume. So in 1920 
the astronomer gave his demonstration all over again, dressed with impressive style and elegance. And this time everybody accepted his report.

표준 출력
dictator
subjects
change
costume
elegance
accepted

point ✅

  • open으로 words.txt 파일을 연 뒤 read로 파일의 내용을 읽어온다.
  • split()으로 읽어온 문자열을 공백을 기준으로 분리하여 리스트로 만든다.
  • 'c' in word와 같이 in 연산자를 사용하여 단어에 c가 들어있는지 판단할 수 있다.
  • ,(콤마)와 .(점)은 출력하지 않아야 하므로 strip(',.')를 사용하여 콤마와 점을 삭제한 뒤 print로 출력한다.

28.4 파일에서 회문인 단어 출력하기

단어가 줄 단위로 저장된 words.txt 파일이 주어집니다. words.txt 파일에서 회문인 단어를 각 줄에 출력하는 프로그램을 만드세요. 단어를 출력할 때는 등장한 순서대로 출력해야 합니다. 그리고 파일에서 읽은 단어는 \n이 붙어있으므로 \n을 제외한 뒤 회문인지 판단해야 하며 단어를 출력할 때도 \n이 출력되면 안 됩니다(단어 사이에 줄바꿈이 두 번 일어나면 안 됨).

words.txt
apache
decal
did
neep
noon
refer
river

표준 출력
did
noon
refer

point ✅

  • open으로 words.txt 파일을 읽기 모드 'r'로 연다.
  • readlines로 파일의 내용을 한 줄씩 읽어서 리스트 형태로 가져온다.
  • for word in words:와 같이 리스트를 반복하면서 단어가 회문인지 판단한다.
  • 이때 파일에서 읽은 단어는 \n이 붙어있으므로 \n을 제외해야 한다. 따라서 word = word.strip('\n')과 같이 \n을 삭제하여 다시 word에 저장한다.
  • word == word[::-1]과 같이 원래 문자열 word와 뒤집은 문자열 word[::-1]을 비교해서 회문인지 판별하면 된다.

이 외에도 회문을 판단할 때는 반복문, 시퀀스 뒤집기, 리스트와 reversed, 문자열의 join 메서드와 reversed를 사용하는 방법을 사용할 수 있다.

0개의 댓글