전체 글

코드를 작성하던 중 SonarLint에서 위와 같은 경고 문구를 제시했다. Sonar Cloud에서 말하고있는 이유로는 다음과 같은 설명이 포함되어있다. "This rule raises an issue on a non-transient and non-serializable field within a serializable class, if said class does not have writeObject and readObject methods defined." "이 규칙은 직렬화 가능한 클래스 내에 일시적이지 않고 직렬화할 수 없는 필드가 있는 경우, 해당 클래스에 writeObject 및 readObject 메서드가 정의되어 있지 않은 경우 문제를 일으킵니다." 한마디로 직렬화 대상인 클래스 내부에 ..
파이썬이랑 친해지기 dictionary 형태의 자료형에 두 리스트의 값을 담기 위해 다음과 같이 작성했다. name = ["may", "kein", "kain", "radi"] yearning = [5, 10, 1, 3] dic = {} for i, j in zip(name, yearning): dic[i] = j 파이썬에서는 iterable한 tuple 값에 대해 dictionary로 초기화해주는 dict() 함수를 제공한다. name = ["may", "kein", "kain", "radi"] yearning = [5, 10, 1, 3] dict(zip(name, yearning)) # 실행 결과 # {'may': 5, 'kein': 10, 'kain': 1, 'radi': 3} 코드 def solu..
파이썬이랑 친해지기 파이썬에서는 iteratable한 데이터에 대해 인덱스와 값을 함께 조회할 수 있는 enumerate() 라는 함수를 제공한다. 다음과 같이 작성할 수 있다. for idx, ch in enumerate("hello world"): print(idx, ch) # 실행결과 # 0 h # 1 e # 2 l # 3 l # 4 o # 5 # 6 w # 7 o # 8 r # 9 l # 10 d 코드 def solution(s): tmp = {} answer = [] for idx, ch in enumerate(s): if tmp.get(ch) is None: tmp[ch] = idx answer.append(-1) else: answer.append(idx - tmp[ch]) tmp[ch] =..
파이썬이랑 친해지기 파이썬에서는 순열과 조합을 위한 라이브러리를 제공해준다. from itertools import combinations a = [1, 2, 3, 4] for i in combinations(a, 3): print(i) # 결과 # (1, 2, 3) # (1, 2, 4) # (1, 3, 4) # (2, 3, 4) combinations 함수를 통해 특정 리스트에 있는 요소들을 조합으로 표현할 수 있다. 이때 반환되는 값은 iteratable 객체이며 for문으로 순회할 수 있다. from itertools import permutations a = [1, 2, 3, 4] for i in permutations(a, 3): print(i) # 결과 # (1, 2, 3) # (1, 2, 4..
파이썬이랑 친해지기 파이썬에서는 진법 변환을 아주 편하게 수행해주는 함수를 제공해준다. 단지 문자열을 int형으로 변경해주는줄만 알았던 int() 함수에 비밀이 있다. int함수에는 두번째 인자를 포함할 수 있는데 이는 바로 int형으로 변환하려는 문자열을 두번째 인자 n진수로 읽는다는 의미다. a = "100" b = "70" c = "0021" # 2진수: 100 -> 10진수: 4 print(int(a, 2)) # 8진수: 70 -> 10진수: 56 print(int(b, 8)) # 3진수: 0021 -> 10진수: 7 print(int(c, 3)) 따라서 위 int() 함수를 이용하여 진법 변환을 손쉽게 수행할 수 있다. 코드 def solution(n): tmp = '' while(n): tmp..
수학이랑 친해지기 최대공약수는 말 그대로 두 수의 공약수 중 최댓값을 의미한다. 두 수의 약수를 모두 구하고 공통된 약수 중 최댓값을 구하면 될 것이다. 하지만 위 과정은 뭔가 비효율적이다. 유클리드 호제법을 이용한다면 최대공약수를 간단하게 구할 수 있다 유클리드 호제법 - 최대공약수 호제법은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘이다. https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95 유클리드 호제법 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드..
_주노
juno.log