기초 100제는 알고리즘 문풀에서 많이 사용되는 기본 코드 유형과 관련된 문제(특히 구현 implementation 관련)들로 이루어져 있다. 자신감을 기르기에 딱 좋은 사이트이다.
🌳 기억하면 좋을 구현 팁들
- input().split(':')를 사용하면 입력받은 값을 콜론 ':' 기호를 기준으로 자른다. input().split()는 공백을 기준으로 입력값을 자른다.
- print(a, b, sep=':')를 사용하면 콜론 ':' 기호를 사이에 두고 a:b 형식으로 값을 출력한다. (sep은 seperator를 의미함)
- 키보드로 입력되는 것들은 기본적으로 문자열로 인식되고, 문자열끼리 더하기(+)하면 두 문자열이 합쳐 연결된(concatenate) 결과를 만들어 낸다.
- 10진수 int 형의 숫자를 %x, %o를 사용해 각각 16, 8진수로 출력할 수 있다. 16진수 대문자는 %X로 출력한다. print('%x' %n), print('%X' %n)
- chr(x) 정수값(ASCII) → 유니코드(문자)
- ord(x) 유니코드(문자) → 정수값(ASCII)
🌳 다시 볼만한 문제들
6033번 : 문자 1개 입력받아 다음 문자 출력하기
아스키문자표에서 'A'는 10진수 65로 저장되고 'B'는 10진수 66으로 저장된다. 문자도 ASCII 값으로 덧셈 가능!
입력된 문자/숫자를 ord() 함수로 ASCII로 일괄 변환하고, ASCII값을 유니코드 문자로 변환해 +1 하여 다음문자를 출력한다.
n = ord(input())
print(chr(n+1))
6083번 : 빛 섞어 색 만들기
파이썬의 출력 속도를 고민해봐야할 문제였다. 입출력 시간을 크게 신경쓰지 않고 있었는데 이렇게 3중 for문이 쓰이는 경우는 시간을 고려해줘야했다.
입출력 시간은 print('%d %d %d' %(i, j, k)) 형식을 쓸 때가 가장 빨랐다. 아무래도 c언어의 printf 형식이 입출력이 가장 빠른 원리인 것 같다. sep=' '은 불필요하게 작성하지 말자.
# 파이썬 입출력 속도
# print('%d %d %d' %(i, j, k))
# print(i, j, k)
# print(i, k, k, sep=' ')
import itertools as it
r, g, b = map(int, input().split())
sum = r*g*b
for i in range(r):
for j in range(g):
for k in range(b):
print('%d %d %d' %(i, j, k))
print(sum)
6092 ~ 6098 : 리스트 관련 문제
뒷부분 문제들은 대부분 풀어볼만했고, 앞쪽 문제들보단 푸는 데 시간이 조금 걸렸다. 특별한 알고리즘 지식이 필요하진 않았고 적절한 반복문과 if/else 제어만 잘 사용해주면 충분했다.
🌳 파이썬 100문제
이틀 정도에 나눠서 100문제 풀었다. 아무리 쉬운 문제여도 100문제는 적지 않긴 하다. 뒤로 갈수록 그래도 풀만한 문제들이 많았고, 앞부분 문제도 간단하게 파이썬 문법을 정리하기에 딱 좋은 난이도였다. 알고리즘은 전혀 다루지 않은 거라 그래프나 최단경로, 트리문제 풀려면 파이썬 버전 공부도 조금 필요하겠지만.. 이제 프로그래머스로 넘어가서 난이도를 조금씩 높여야겠다. 무엇보다도 자주 꾸준히 푸는 게 젤 중요하다! (●'◡'●)
'Problem Solving > BOJ 백준' 카테고리의 다른 글
[BOJ] 백준 15686번 - 치킨 배달 (python) (0) | 2021.06.07 |
---|---|
[BOJ] 백준 9370번 미확인 도착지 (C++ 코드) (0) | 2021.02.06 |
[BOJ] 백준 10282번 해킹 (C++ 코드) (0) | 2021.02.06 |
[BOJ] 백준 1707번 이분그래프 (C++ 코드) (0) | 2021.01.24 |
[BOJ] 백준 10026번 적록색약 (C++ 코드) (0) | 2021.01.23 |