문제 JadenCase 문자열 만들기 접근 잘 처리해준 것 같은데 틀려서 반례를 찾느라 한참 걸린 것 같다. 입력으로 공백문자만 주어지는 경우가 있었다. 이 경우 원래 공백문자를 그대로 출력해줘야 하는 것 같다. split를 하지않고 한글자씩 읽으며 변환하는게 더 쉬울거 같기도하다. 이미 시작을 이렇게 해서 바꾸긴 귀찮아서 그냥 했다. ...
문제 튜플 접근 문자열을 잘 처리해주어야 한다. 문자열에서 가장 앞, 뒤의 {{, }}를 제거해주고, “},{“를 기준으로 split해주면 집합의 각 원소를 얻을 수 있다. 원소의 길이를 기준으로 정렬해준다. 이를 ,를 기준으로 다시 split해주면 하나하나의 숫자를 list에 담을 수 있다. 이제 answer에 담기지 않은 숫자를 하나씩...
문제 쿼드압축 후 개수 세기 접근 0과 1의 개수만 세면 되기 때문에, 일반 적인 쿼드압축에서 배열을 유지하는 것과 다르게 0, 1의 개수만을 이용해봤다. 코드 파이썬 코드 def solution(arr): answer = [] n = len(arr) answer = quardTree(arr, 0, 0...
문제 가장 큰 정사각형 찾기 접근 DP 문제이다. 왼쪽 위 부터 순서대로 배열을 탐색하며 현재 자리에서 정사각형을 만들수 있는지 판단하면 된다. 판단 기준은 현재 자리가 1일 때, 왼쪽, 위, 왼쪽 위의 값 중 가장 작은 값에 +1을 한다. 가장 작은 값이 0이라면 정사각형은 만들어질 수 없다. 반면 가장 작은 값이 1이상이라면 정사각형...
문제 다음 큰 숫자 접근 파이썬의 내장함수를 많이 사용했다. 2진수 변환은 bin(), format() 함수를 사용할 수 있다. 나는 format()을 사용했으며, count() 함수를 이용하여 1의 개수를 센다. n부터 1씩 늘려가며 비교해주다가 같은게 나오면 그게 답이다. 코드 파이썬 코드 def solution(n...
문제 땅따먹기 접근 DP 문제이다. n * 4의 배열을 만들어두고, 현재 열의 최대값을 4개 모두 구해준다. 각 자리의 최대값은 현재 값 + 이전 열에서 현재 위치를 제외한 3개 중 최대값이다. i는 현재 열을 나타내며 j는 4칸중하나 즉, 0~3의 범위이다. [dp[i][j] += max(dp[i-1][j를 제외한 나머지])] 최종 ...
문제 [1차] 프렌즈4블록 접근 크게 두단계로 이루어져 있다. 2x2 블록 찾기 n x m 블록을 하나씩 검사하며 인접한 4개 블록이 같은지 검사한다. 왼쪽 상단부터 검사를 시작하며 검사하는 블록 기준으로 오른쪽, 아래, 오른쪽 아래의 블록이 같은지 체크한다. 이렇게 검사하면 중복된 곳은 검사하지 않는다. 같다면 해당 블록의 숫...
문제 소수 만들기 접근 주어지는 수 중 순서에 상관없이 3개를 뽑는 문제로, 완전 탐색 문제이다. 소수를 미리 다 찾아두고 3개의 합이 소수인지 확인만 해주면 된다. 코드 파이썬 코드 dp = [1] * 3000 def solution(nums): answer = -1 dp[0] = dp[1] = 0 f...
문제 올바른 괄호 접근 가장 기본적인 stack을 활용한 괄호쌍 문제이다. 코드 파이썬 코드 def solution(s): answer = True stack = [] for item in s: if item == '(': stack.append(1) e...
문제 이진 변환 반복하기 접근 s에 1이 몇개 포함되어 있는지 확인해주면 된다. s의 길이 - 1의 개수만큼이 0의 개수이므로 한번 s를 변환할 때마다 0의 개수를 카운팅해서 더해주고, 1의 개수로 다시 s를 생성한다. 코드 파이썬 코드 def solution(s): answer = [0,0] while s ...