전체 글198 [Python] 21.07.07 : BOJ 11655 BOJ 11665번(https://www.acmicpc.net/problem/11655)을 풀며. Extended slices(https://ballenabox.tistory.com/5)에서 언급했던, '다 때려박아 놓고 꺼내쓰는' 방식을 사용해 보았다. 소문자 변환에 쓸 문자열 'low'와 대문자 변환에 쓸 문자열 'up'을 만들어 놓고 list.index() + 13으로 꺼내쓰는 방식이다. 그런데 변환이 z를 넘어 a로 돌아오게 된다면 번거로워진다. 반복문에서 처음으로 돌아오게 하기엔 코드가 더러워진다. 그래서 대/소문자 문자열의 z(Z)의 뒤에 a~m을 한번 더 붙였다. 그러면 z를 변환해도 처음으로 돌아갈 필요가 없다. low = "abcdefghijklmnopqrstuvwxyzabcdefghij.. 2021. 7. 7. [Python] 21.07.06 : 진법 변환 BOJ 2745번(https://www.acmicpc.net/problem/2745)을 풀며. 물론 파이썬으로는 굉장히 간단한 문제다. 입력받은 B진법 수 N을 int()로 변환하면 된다. int( B, int(N) ) 로 그냥 변환이 되기 때문이다. 하지만 과정을 자세히 이해해 보자. . . . 숫자/문자에 대응하는 값을 Dictionary 형태로 미리 만들어 놓는다. 이 Dictionary를 for문에서 enumerate로 접근하면 index와 값(key)에 접근하기 쉽다. for i, j in enumerate(dic[::-1])로 N의 아래 자릿수부터 계산하며 더해간다. [ 이번 자릿수에 해당하는 key값 * 진법수 N의 i(index)제곱 ]을 계속 더해간다. . . . 이번 문제에서 기억할 점.. 2021. 7. 6. [Python] 21.07.06 : Extended slices BOJ 11005번(https://www.acmicpc.net/problem/11005)을 풀며. N진법의 수를 구하는 과정을 다시 되새겨보자. 10진법의 수 B를 N진법으로 나타내려면... 1. B를 N으로 나눈다. 2. 1의 나머지는 변환될 N진법 수의 자릿수가 된다(낮은 자릿수부터). 3. 1의 몫은 다음 나눗셈의 B가 된다. 4. 1 ~ 3을 반복한다. 5. 변환될 N진법 수가 몇 자리일지는 미리 알 수 없다. 그러니 자릿수가 나올 때마다 앞에서 뒤로 붙여갈 것이고, 변환된 N진법 수는 역순으로 출력될 것이다. . . . 파이썬은 input()이나 sys.stdin.readline() 등으로 입력을 받으면 문자열로 받기도 하고, 리스트 등에서의 접근을 index로 하는 경우가 많다. 그리고 코드 .. 2021. 7. 6. [Python] 21.07.06 : map() BOJ 10824번(https://www.acmicpc.net/problem/10824)을 풀며. 처음엔 입력을 받는 부분을 a, b, c, d = map(input().split()) 로 했다. 그냥 입력받으면 문자열로 받고, 더하면 그냥 붙을테니까. 그런데 이렇게 하니 런타임 에러가 떴다. 이런, 내가 멍청했다. map의 첫 인자에 자료형을 썼어야 했는데 안썼던 것이다. 대부분의 풀이를 보면 a~d를 그냥 하나의 변수에 리스트로 받아 해결했다. 당연히 그러는게 더 편해보인다. 입력값의 개수가 적다고 노가다하는 개짓거리는 하지 말고 리스트를 애용하자. 결론 1. map('자료형', input().split()) - 자료형 까먹지 말자. 2. 그냥 리스트 쓰자 2021. 7. 6. [Python] 21.07.06 : 빠른 입력 파이썬은 다른 언어에 비해 메모리를 많이 먹고, 시간도 오래 걸린다고 한다. 백준을 풀 때마다 결과창에 뜨는 메모리량을 볼 때마다 느낀다. 보통 입력을 처리할 때에는 input()을 쓰는데, 이 입력을 사용하면 여러모로 걸리는 경우가 많다고 한다. 그래서 빠른입력을 사용하는 것을 권장받았다. import sys num = sys.stdin.readline() 사용 시 주의해야 할 점이 있다. 1. 코드를 보면 눈치채겠지만, 'readline'이다. 줄 단위로 입력받기에 마지막에 개행문자(\n)가 같이 입력된다고 한다. 2. input()과 동일하게 문자열로 입력받는다. 형변환에 주의하자. 3. input()에서 사용하던 .split()등의 메서드도 사용 가능하다. 사용 케이스 1. 여러 개의 정수 한 줄.. 2021. 7. 6. [Python] 21.07.06 : 진법 변환 BOJ 1212번(https://www.acmicpc.net/problem/1212), 1373번(https://www.acmicpc.net/problem/1373)을 풀며. 파이썬은 내장 함수로 진법을 변환활 수 있다. 아래에서처럼 int()의 2번째 인자로 조절할 수도 있고, 2진법 bin(), 8진법 oct(), 16진수 hex() 등이 있다. (각각 구별문자 0b, 0o, 0x가 숫자 앞에 붙는다.) print(oct(int(input(), 2))[2:]) 1. int(input(), 2)로 입력받은 값을 2진수로 변환한다. 2. 변환한 2진수를 oct()로 9진수로 변환환다. 3. 출력 시 숫자만 출력해야 하므로 [2:]을 뒤에 붙여 앞에 붙는 구별문자(0o)를 없애준다. 위 경우를 보니 int.. 2021. 7. 6. 이전 1 ··· 30 31 32 33 다음