15일차 TIL : 백준 1단계

변시윤·2022년 11월 14일
0

내일배움캠프 4기

목록 보기
15/131

학습내용

웹 퍼블리싱 정복 1-2주차

백준 1단계

  • 10869 - 사칙연산
  • 10926 - ??!
  • 18108 - 1998년생인 내가 태국에서는 2541년생?!
  • 3003 - 킹, 퀸, 룩, 비숍, 나이트, 폰

백준

1단계 - 입출력과 사칙연산

10869 : 사칙연산

≒ 1000, 1001, 10998, 1008

문제
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.

입력
두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)

출력
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.

제출답안

a = list(map(int, input().split()))
print(a[0]+a[1])
print(a[0]-a[1])
print(a[0]*a[1])
print(a[0]/a[1])
print(a[0]%a[1])

정답

a = list(map(int, input().split()))
print(a[0]+a[1])
print(a[0]-a[1])
print(a[0]*a[1])
print(a[0]//a[1])
print(a[0]%a[1])

거의 다 맞았는데 몫을 구하는 부분에서 print(a[0]/a[1])라고 입력하는 바람에 틀렸다. 몫은 정수만 가능하기 때문에 /이 아니라 //를 사용해야 한다.

10926 : ??!

문제
준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

입력
첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다.

출력
첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다.

제출답안①

userID = input()
alreadyID = userID
if userID == alreadyID:
    print(f'{id}??!')

제출답안②

def check(id):
    alreadyID = id
    if id == alreadyID:
        print(f'{id}??!')

check("cinephile")

정답

print(f'{input()}??!')

무진장 길게 썼는데 해설을 적기도 민망할 정도로 간단한 로직이었음.......

18108 : 1998년생인 내가 태국에서는 2541년생?!

문제
ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.

입력
서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)

출력
불기 연도를 서기 연도로 변환한 결과를 출력한다.

제출답안 & 정답

buddhistYear = int(input())
print(buddhistYear-543)

10926번에서의 실패를 교훈 삼아 쉽게 생각했더니 성공! 불기를 변수로 할당하지 않고 프린트에서 바로 값을 구한다면 더 간단한 코드도 가능하다. 'hello world' 출력하는 문제 이후로 처음으로 내 힘으로 맞춘 거라 기분 좋다 ㅎㅎ

3003 : 킹, 퀸, 룩, 비숍, 나이트, 폰

문제
동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다. 체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.

입력
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.

출력
첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.

예제 입력 0 1 2 2 2 7

예제 출력 1 0 0 0 0 1

제출답안

pieces = list(map(int, input().split()))

여기까지만 적고 못적음...

정답

chess = [1, 1, 2, 2, 2, 8]
pieces = list(map(int, input().split()))

for i in range(6):
    print(chess[i] - pieces[i], end=' ')
  1. 조건(피스의 갯수)를 리스트로 담기
  2. 입력값을 리스트로 담기
  3. 반복문을 돌면서 계산하기

    end=''
    출력시 이전값과 다음값 사이에 end로 받아온 값이 추가된다.

반복문을 생각 못한 건 아닌데 range 함수를 반복문에서 써본 적이 없어서 이런 용법은 미처 생각 못했다. 그래서 pieces를 반복문으로 돌린 다음에 조건문으로 계산해야 하는 지, 조건문을 사용한다면 어떤 조건을 적용해야 할 지 헤매고 있었다. 헛다리 제대로 짚었음^-^.... 조건문을 사용하면 코드가 너무 길어져서 이건 아닐 거 같다고 생각하긴 했는데 다른 방법은 떠오르지 않았다...



어려운 난이도도 전혀 아니었고 문제 해결에 쓰인 문법들도 대부분 아는 내용이었는데 아직 문법이 손에 익지 않다보니 적재적소에 활용을 못하는 느낌이다. 어쩔 수 없다... 자주 써서 익숙해지는 수밖에는....

내일은 반드시 백준 1단계를 모두 끝내고 웹퍼블리싱 강의를 완주해야지 알고리즘 강의도 들어야하는데...........엄두가 안나네..^^

profile
개그우먼(개발을 그은성으로 하는 우먼)

2개의 댓글

comment-user-thumbnail
2022년 11월 15일

백준에 돌입...! 지금은 익숙치 않아도 금방 잘하게 되실겁니다

1개의 답글