0517 개발일지

Yesol Lee·2022년 5월 17일
0

개발일지 - 2022

목록 보기
56/187

오늘 한 일

알고리즘

백준 11104 Fridge of Your Dreams

백준 11104
0으로 시작할 수 있는 2진수를 받아 10진수로 출력하는 문제였다. 예전 16진수 문제를 통해 int() 함수에 입력값의 진수를 정해줄 수 있다는 것을 몰랐으면 하나하나 계산해야 했을 수도 있는 문제였다.

for _ in range(int(input())):
    print(int(input(), 2))

백준 11319 Count Me In

백준 11319
공백이 포함된 영문 문자열을 받아 자음과 모음 개수를 출력하는 문제였다.

  • 처음엔 모음 개수, 자음 개수 변수를 만들어 모음에 해당하면 모음 개수+1, 아니면 자음 개수 +1을 했다.
  • 처음엔 공백을 제거하지 않아 공백 개수가 자음 개수에 포함되는 문제가 있었다.
  • 생각해보니 모음이 아니라면 전부 자음일테니 전체 글자 개수에서 모음 개수를 빼면 자음 개수가 나온다는 것을 알게 되었다.
  • 최종 코드 제출 후 다른 분의 코드를 보니 입력값에 lower()를 이용해 전부 소문자로 바꿔주면 vowels 리스트에 대문자를 넣을 필요가 없다는 것을 알았다.
vowels = ['A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u']
for _ in range(int(input())):
    chars = list(map(str, input().replace(' ', '')))
    vowel_count = 0
    for c in chars:
        if c in vowels: vowel_count+=1

    print(len(chars)-vowel_count, vowel_count)

백준 11367 Report Card Time

백준 11367
정수로 된 점수값을 받아 등급 학점으로 바꾸는 단순한 조건문 문제였다. 플러스 학점을 주는 부분을 어떻게 줄일 수 없을까 생각하다가 10으로 나눈 나머지를 이용하기로 했다. 점수가 60 이상이면서 10으로 나눈 나머지가 7 이상인 경우 기존 학점에 +를 더해서 출력하도록 했는데, 계속 틀려서 시간이 좀 소모되었다.

for _ in range(int(input())):
    name, score = input().split()
    score = int(score)
    grade = ""
    if score >=90: grade = 'A'
    elif score >= 80: grade = 'B'
    elif score >= 70: grade = 'C'
    elif score >= 60: grade = 'D'
    else: grade = 'F'
    
    if score >= 60 and score%10 > 6:
        grade += '+'
    print(name, grade)

다른 분의 코드를 참고해보니 100점일 때를 고려하지 못해서 오답이라는 것을 알게 되었다. (100점일 경우 A+가 나와야 하지만 10으로 나눈 나머지가 0이라 위 조건에 해당하지 않음)

...
if score >= 60 and score%10 > 6 or score==100:
        grade += '+'
    print(name, grade)
profile
문서화를 좋아하는 개발자

0개의 댓글