728x90
leetcode.com/problems/convert-binary-number-in-a-linked-list-to-integer/
2진수 번호가 담겨있는 Linked List 10진수로 표현하기
Return the decimal value of the number in the linked list.
static 변수 사용하지 말자.
static 변수로 선언하여 동작할 경우 개별 테스트케이스는 알맞은 값이 반환되지만,
여러 테스트케이스 진행 시 기존값이 남아서 코드 제출 시, 누적된 값이 출력되어 잘못된 값이 나온다.
public class LinkedList0405 {
static String decimal = "";
public int getDecimalValue1(ListNode head) {
decimal = head.val + "";
if (head.next != null) {
getDecimalValue1(head.next);
}
return Integer.parseInt(decimal, 2);
}
}
풀이 1
public class LinkedList0405 {
public int getDecimalValue2(ListNode head) {
int num = head.val;
while (head.next != null) {
num = num * 2 + head.next.val;
head = head.next;
}
return num;
}
}
풀이2
class Solution {
public int getDecimalValue(ListNode head) {
int num = head.val;
while (head.next != null) {
num = (num << 1) | head.next.val;
head = head.next;
}
return num;
}
}
기존 num 을 한 비트만큼 왼쪽으로 이동 (2¹를 곱한것과 같음) 한 것과 head.next.val (다음 2진수) 중 하나라도 1 이면 1
예) 101 이라면
//처음 num = 1
//while 문 안에서 동작
num = 10 | 0 //10 = (10진수) 2
nul = 100 | 1 //101 = (10진수) 5
🔍 JAVA 비트 연산자, 쉬프트 연산자 << 관련 추가 정보
728x90
'코딩테스트' 카테고리의 다른 글
[Programmers] [1차] 추석 트래픽 (0) | 2021.04.07 |
---|---|
[Programmers] 타겟 넘버 (0) | 2021.04.06 |
[Programmers] 더 맵게 - 힙(Heap) JAVA (2) | 2021.04.02 |
[LeetCode] 455. Assign Cookies - Python (0) | 2021.04.02 |
[LeetCode] 1. Two Sum - Python (0) | 2021.03.31 |