알고리즘공부를 하기로 결심하고 그 후 조금씩 문제를 풀고있다.
오늘은 그 중에 입문단계였던 codeup 100제의 절반인 50번까지 푼 후 중간 점검겸 회고를 해보려고 한다.
50번까지 풀면서 처음보는것도 막히는 것도 전혀없이 쭉쭉 풀꺼라고 생각했지만 막상 해보니 처음보는 것도있었다.
다시 한번 기억해 둘것
- \를 사용해서 문자열안에 "\'같은 기호들을 넣는 것
- print('%x'% n) n에 저장되어있는 값을 16진수(hexadecimal) 소문자 형태 문자열로 출력
- print('%X' % n) n에 저장되어있는 값을 16진수 대문자 형태 문자열로 출력
- print('%o' % n) n에 저장되어있는 값을 8진수(octal) 형태 문자열로 출력
- n = ord(input()) 입력받은 문자를 10진수 유니코드 값으로 변환한 후, n에 저장한다.
- print(chr(c)) #c에 저장되어 있는 정수 값을 유니코드 문자(chracter)로 바꿔 출력한다.
비트시프트(<<)
컴퓨터 내부에는 2진수 형태로 값들이 저장되기 때문에,
2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로
지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 1/2로 줄어드는데
왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0이 주어진 개수만큼 추가되고,
오른쪽 비트시프트(>>)가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가되고,
가장 오른쪽에 있는 1비트는 사라진다.
n = 10
print(n<<1) #10을 2배 한 값인 20 이 출력된다.
print(n>>1) #10을 반으로 나눈 값인 5 가 출력된다.
print(n<<2) #10을 4배 한 값인 40 이 출력된다.
print(n>>2) #10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다.
2의n승 만큼 곱하기
정수 2개(a, b)를 입력받아 a를 2b배 곱한 값으로 출력해보자. (0 <= a <= 10, 0 <= b <= 10)
예시
a = 2
b = 10
print(a << b) #210 = 1024 가 출력된다.
참고
예를 들어 1 3 이 입력되면 1을 23(8)배 하여 출력한다.
자주 사용해보지 않은 것들이 주로 모르는 것들이었지만 알고리즘테스트 간에 정수처리를 해야할경우 사용할수도있으니 기억해둬야겠다.
'First step > Algorithm' 카테고리의 다른 글
사전 준비 (0) | 2022.01.26 |
---|