TIL/Coding Test

[LeetCode] Convert Binary Number in a Linked List to Integer

반응형

오늘의 문제. 링크드리스트에 들어 있는 이진수를 십진수로 바꿔라.

 

Convert Binary Number in a Linked List to Integer - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

일단 자바로 한 번 풀고

public class cote0405_1290_ConvertBinaryNumberInALinkedListToInteger {
    public class ListNode {
        int val;
        ListNode next;
        ListNode() {}
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }
    
    public int getDecimalValue(ListNode head) {
        // make a String with the linked list
        String binaryStr = head.val+"";

        while(head.next != null){
            head = head.next;
            binaryStr = binaryStr + head.val;
        }

        //System.out.println(binaryStr);

        int len = binaryStr.length();
        char[] strChar = binaryStr.toCharArray();
        int answer=0;
        for(int i=0; i<len; i++){
            //if 1, add it as pow
            if(strChar[i] == '1'){
                answer += Math.pow(2, len-i);
            }    
        }
        return answer;
    }
}

파이썬으로 한 번 다시 풀었다. 파이썬은 다른 사람의 훨씬 더 짧은 코드를 분석한 뒤 그걸 파이썬으로 옮겼다. 자바에선 String변수 선언할 때 백날천날 str을 썼는데 파이썬에서는 함수로 제공되는 str()이 있어서 변수명으로 사용이 불가능한가보다.

# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class Solution:
    def getDecimalValue(self, head: ListNode) -> int:
        bistr = str(head.val)

        while head.next:
            head = head.next
            bistr += str(head.val)

        return int(bistr, 2)

 

728x90
반응형

'TIL > Coding Test' 카테고리의 다른 글

[LeetCode] Reverse Linked List  (2) 2021.04.09
[LeetCode] assign cookies (Python)  (0) 2021.04.02
[LeetCode] Two Sum (Python)  (0) 2021.03.31
[LeetCode] Lemonade Change (Python)  (0) 2021.03.29
[백준] 베스트셀러 Best Seller  (0) 2021.03.29