- 2진법을 10진법으로 변환할때 10101 해당수를 뒤에서 부터 2^0 , 2^1 ..이런식으로 계산했었다.. 이런방식이 마음에 들지 않아서 찾아보았는데 앞에서부터 구현해도 가능했었다..
이진수
주어진 이진수에서 하나의 숫자를 변환하면서 만들 수 있는 최대 십진수 값을 구하는 문제였다
부르트포스방식이였고, 중간에 문자를 숫자로 변환 , 이진수를 십진수로 변환하는 과정만 겪으면 되는 거였다..
이진수 -> 10진수
- ex : 11011010 이런식으로 있을때
str = 11011010
int num = 0;
for(int i = 0 ; i < str.size(); i++) {
num = num * 2 + (str[i] - '0')
}
- 위의 방식대로 계산을 하면 곱하기2를 해주니 시프트연산의 느낌으로 가능하다 ,
1을 0으로 0을 1로
- 보통 문자를 숫자로 변환할때 하나의 문자면 - '0'으로 해주지만 , 1 또는 0으로 변경을 해야하면 약간의 트릭을 넣어주면된다
- str[i] = '1' + '0' - str[i]; -> str[i]가 1일 경우 0으로 변환되낟
'알고리즘' 카테고리의 다른 글
백준 7490 , 0 만들기, 문자열수식 백트래킹, (0) | 2021.11.17 |
---|---|
백준 9251, dp, LCS (2가지 방법) (0) | 2021.11.15 |
백준 16719 zoac (0) | 2021.10.13 |
백준 16916 부분 문자열 (0) | 2021.10.13 |
가장 긴 증가하는 부분 수열 4 , 백준 14002 (0) | 2021.10.12 |