int인 입력값을 str으로 변환 후, 파이썬의 문자열 슬라이싱을 이용(::-1 -> 뒤집어 주는 효과)class Solution: def isPalindrome(self, x: int) -> bool: res = str(x)
문제
문제 > 풀이 > 문제의 조건대로 코드 > from collections import deque class Solution: def romanToInt(self, s: str) -> int : table = {"I" : 1, "V" : 5,
시간복잡도가 O(log n)을 가져야 하기 때문에 이진탐색을 활용함탐색에 성공하면 mid 값을, 실패 시 완전 탐색 활용
어떠한 내장함수나 오퍼레이터를 사용하지 못 하기 때문에 직접 찾아야 하므로 이진 탐색 사용탐색에 성공 시 mid를 return하고, 못 하면 right를 return (while - else 구문)
단순 구현 문제이다.
지우려는 노드의 값을 그 다음 노드의 값으로 바꿔주고, 노드가 가리키는 next를 다음 다음의 노드로 바꿔줌
로마숫자와 정수를 Dictionary에 짝을 지어 추가해줌주어진 정수를 자릿수 분해하여 res 배열에 appendDictionary의 key값을 뽑아서(keys() 활용) 내림차순으로 정렬 후 std로 선언 res배열을 돌며 각 배열 요소의 값이 0이 될 때 까지 st
in 연산자로 haystack에 needle이 있는 지 확인없으면 -1, 있으면 index method의 값을 return
n번째 계단에 도착할려면 그 이전에 n-1 또는 n-2 계단에 위치해야함점화식은 f(n) = f(n-1) + f(n-2)
문자열 입력을 split 함수로 list로 변형한 후, list-1 return함.
itertools 라이브러리의 combinations 모듈을 사용함.예시를 보면 알 수 있듯이 \[]을 꼭 추가해줘야함.
기존의 78. Subsets 문제와 유사하지만, 중복을 제거하기 2개의 절차가 필요함.combinations에서 중복을 1차로 제거함.(1,4), (4,1)이 다른 경우로 판단되는 경우를 막기위해 모든 요소를 sort 해 줌.
LinkedList 안의 모든 수를 nums에 str 형태로 저장함.(∵ join 함수 사용)int로 변환.
edge의 갯수를 구하기 위해 count dictionary 만듦.for문을 돌며 각 vertex마다 연결된 edge갯수 세어 줌.graph의 중앙은 모두와 연결되어있기 때문에 edge의 갯수와 같으므로 해당 값 return.
문제의 조건은 크게 2가지이다.1) Town Judge는 모두에게 신뢰를 받는다.2) Town Judge는 누구도 신뢰하지 않는다.먼저 len(trust) == 0 인 경우를 해결함.(사람이 1명이면 그 사람이 Town Judge이고, 그 이상이면 불가능)아니면 dic
크게 3가지 경우로 나뉨.1) 모두 대문자인 경우2) 처음만 대문자이고 나머지는 소문자3) 전부 소문자ord함수를 통해 첫번째 글자의 대, 소문자 여부 확인함.대문자일 경우 두번째도 대문자인지 확인하여 1), 2)번 조건 해당 확인.1)이면 upper함수를 사용하여 원
입력인 32비트를 유지를 위해 이진수를 뒤집는 과정고 0을 padding 해줘야 함.
int 입력 x를 str로 형 변환 후, 문자열 slicing을 이용해 뒤집음.뒤집을 시, 앞부분의 0을 제거하기 위해 결과값을 int로 변환함.(ex. 120 -> 021 -> 21)\-2^31 ~ 2^31 밖의 값 일 경우 0을 return 해야 하므로 마지막에 확
최대 힙을 이용하기 위해 score를 전부 음수로 바꾼 tmp를 만들어 준 후, heapify 함수를 통해 tmp를 힙으로 만듦.tmp가 빌 때 까지 heappop을 해주면서 등수에 맞게 score 값을 변경해 줌.
각 번호에 해당하는 문자열을 dictionary에 list형태로 대입함.문자열의 max가 4이므로, digit의 자릿수가 될 수 있는 경우는 0부터 4까지 총 5가지임.각 경우마다 번호에 해당하는 list를 호출 후, product함수를 이용하여 각 list의 모든 조
map함수와 lambda식을 활용하여 각 배열의 합을 구해준 후, max값을 return함.
itertools 모듈의 permutations함수 사용.map함수와 lambda식으로 tuple 형태를 list 형태로 변환.
set을 활용하여 중복된 항목을 제거 함.map함수와 lambda식을 활용하여 tuple을 list로 변환 후 return함.
빈 문자열이면 True return함.아닌 경우 문자열을 돌면서 숫자, 알파벳 인 것만 t란 배열에 추가해줌.(문제에서 palindrome 판별 시 대, 소문자는 상관 없기에 대문자는 lower함수로 바꿔서 추가)문자열 slicing을 활용하여 palindrome이 맞
문제의 조건대로 stack을 구현함getMin(), top()은 각각 min 함수와 index를 활용함.
digits 요소를 map함수를 통해 int에서 str으로 변경함.join함수를 통해 하나의 문자열로 만들고, 형변환을 통해 정수로 만듦.정수값에 +1 한 후, 다시 str로 형변환 해주고 list로 만들어 return함.
미리 설정된 guess 함수를 통해 대, 소 여부를 알 수 있음.수의 범위가 매우 크기 때문에 이진탐색을 사용함.
collections 모듈의 Counter 클래스를 통해 각 요소가 몇번 나타나는지 알 수 있음.Counter 클래스 중에서 most_common은 빈출순으로 정렬해서 list로 반환해 줌.
문제 > 풀이 > 문제의 조건은 주어진 logs를 정렬하는데, 숫자부와 문자부를 나누어서 정렬함. (각 부는 첫 식별자 이후의 내용에 따라 나뉨.) 1) 문자부가 반드시 숫자부 앞에 와야함. 2) 숫자부는 기존 순서를 유지해야함. 3) 문자부는 내용의 사전순으로 정렬
제한된 시간복잡도가 O(1)이고 input값을 수정해야 하기 때문에 reverse함수 사용함.
계산의 편의성을 위해 lower함수로 문자를 소문자로 바꿔 주고 이를 list로 변환함.for문을 돌며 소문자가 아닌 문자들은 전부 공백으로 바꿔 줌.join함수를 통해 list에서 문자열로 바꿔준 후 split함수를 사용해 공백을 기준으로 split함.count란 d
애너그램은 단어의 구성이 전부 똑같은 점을 이용함.결과값을 저장할 dictionary를 선언 후, strs 배열을 돌면서 배열의 각 요소를 list로 변환 및 sort함수를 이용해 정렬해주고, 이를 다시 join함수를 통해 문자열로 바꿔줌.바꿔준 결과값이 기존에 존재하
Counter 메소드끼리 뺄셈을 이용함.elements함수로 Counter의 숫자만큼 요소를 list형태로 반환 받은 후, join함수를 사용하여 문자열 형태로 return함.
Counter로 원소의 갯수를 센 후, 이를 dictionary로 바꿔 줌.for문을 돌며 nums의 요소를 key로 사용하면서 1인 값을 찾고, 이를 return 해 줌.
Counter로 원소의 갯수를 센 후, 이를 dictionary로 바꿔 줌.for문을 돌며 nums의 요소를 key로 사용하면서 1인 값을 찾고, 이를 return 해 줌.
Counter로 원소의 갯수를 센 후, 이를 dictionary로 바꿔 줌.for문을 돌며 nums의 요소를 key로 사용하면서 1인 값을 찾아 이를 fin 배열에 추가해 줌.
주어진 숫자를 자릿수별로 나누기 위해 str로 형 변환 후, list로 변환해 줌.while문을 돌며, list의 합이 한자리면 합을 return 해주고, 아니면 1.의 연산을 다시 함.
내재된 정렬 함수를 사용하지 못 하기 때문에 버블정렬을 사용함.
먼저 길이가 2보다 작거나, s 자체가 palindrome 일 경우 바로 return 해 줌. for문을 돌며 시작점을 정하고, 문자열이 palindrome이면 그 문자열을 return해주는 expand 함수를 선언하여 사용하여 값들을 비교 후, max가 되는 s값 r
짝을 2개씩 지어서, 그 짝들의 최소값의 누적 합을 최대로 만들어야 함.주어진 nums를 오름차순으로 정렬 후, 앞에서 부터 2개씩 짝 지어서 계산하면 최댓값임.
자기자신을 제외한 왼쪽의 곱셈 결과 \* 오른쪽 곱셈 결과로 해결함.처음 for문에서 왼쪽부터 res배열에 안 곱한 값, 1번째, 1 2번째, 1 2 \* 3번째가 입력됨.반대로 오른쪽부터 계산을 실행하면 4 3 2번째, 4 \* 3번째, 4번째, 안 곱한 값이
이득값, 최솟값 변수를 각각 선언해 줌.for문을 돌며, 최솟값을 갱신하면서 기존 이득값과 최댓값 - 최솟값의 차액을 계속 비교하며 큰 값을 저장해줌.
연결리스트의 요소들을 res 배열에 넣어줌.res배열을 문자열로 바꿔준 후, slicing을 통해 palindrome 성립 여부 확인함.
jewels에서 for문을 돌며 각 문자열에 대한 갯수를 결과에 더해줌.Counter를 사용하면 각 문자에 대한 갯수를 확인할 수 있음.
Counter의 most_common()함수를 사용하여 빈도의 내림차순으로 정렬해줌.for문을 돌며 최빈값부터 k번째 값 까지 res배열에 넣어준 후, return함.
최대힙을 사용하기 위해 map함수와 lambda식을 이용해서 기존 값들을 전부 음수로 변환해 줌.목표값-1 까지 heappop 한 후, 마지막 heappop값에 -를 붙여서 return함.
원점에서의 거리를 기존 좌표 값과 함께 res 배열에 넣어 줌.(루트를 씌우는게 공통되기 때문에 생략함.)정렬한 후, map함수와 lambda식을 활용해서 거리 값을 제거해 줌.list slicing을 이용해서 결과값 return함.
Counter의 most_common함수를 통해 빈도의 내림차순으로 정렬함.이를 map함수와 lambda식, sorted 함수를 사용하여 빈도순으로 정렬하되 동일한 빈도일 시 사전 순으로 정렬함.list slicing을 이용해 최빈값부터 k번째까지 return함.
문제의 조건은 총 3가지이다.1) 가로로 봤을 때 숫자가 중복되면 안됨.2) 세로로 봤을 때 숫자가 중복되면 안됨.3) 칸을 3 X 3으로 나눈 것에서 숫자가 중복되면 안됨.위 문제의 조건에 맞게 각각의 경우에 대해 구현함.
Counter의 most_common함수를 이용해 빈도순으로 내림차순함.for문을 돌며 빈도가 2인 것들만 배열에 담아 return함(list comprehension 사용).