목록전체 글 (315)
rueki
2중 for문으로 연속된 숫자 더해서 target 값보다 크면 시작점 1 증가해서 다시 더해서 비교하는 식으로 진행 def solution(n): answer = 0 for i in range(1, n + 1): s = 0 for j in range(i, n+1): s +=j if s == n: answer += 1 break elif s >n: break return answer
- C ++ #include #include using namespace std; int solution(vector land) { int answer = 0; for(int i = 0 ; i < land.size() - 1; i++) { land[i+1][0] += max(land[i][1], max(land[i][2], land[i][3])); land[i+1][1] += max(land[i][0], max(land[i][2], land[i][3])); land[i+1][2] += max(land[i][0], max(land[i][1], land[i][3])); land[i+1][3] += max(land[i][0], max(land[i][1], land[i][2])); } answer = max(l..
올바른 괄호 문제의 확장판 느낌이다. 좌괄호인 경우에 스택 넣고 반대의 경우 pop 하는 식으로 접근하였고 좌측으로 회전하는 것은 앞 글자를 뒤로 붙이는 식으로 하였다. 고려해야할 조건 - 문자열 길이 // 2 -> 최대 만들 수 있는 괄호 개수 - 문자열 길이 홀수면 애초에 괄호 생성 불가 def solution(s): answer = 0 if len(s) % 2 != 0: answer = 0 return answer else: for x in range(0, len(s)): if x>0: f = list(s)[0] s = list(s)[1:] s.append(f) else: s = list(s) cnt = 0 galho_left = [] for g in s: if g == "[" or g == "("..
이번 문제는 너무 복잡하게 생각해서 초기 테스트케이스만 통과하게 되었다. 너무 많은 개념을 한번에 넣으려하니 간단한 문제도 이상하게 푸는듯.. - python def solution(s): answer = '' num_list = list(map(int, s.split(" "))) num_list.sort() answer = str(num_list[0]) + ' ' + str(num_list[-1]) return answer - C++ #include #include #include #include #include using namespace std; string solution(string s) { string answer = ""; string token; int mn=0, mx = 0; vector..
첫번째 칸에는 1로만 뛸 수 있는 경우 - 1 두번째 칸에는 2로만 뛸 수 있는 경우와 1로만 뛸 수 있는 경우 - 2 세번째 부터는 1, 2 이용해서 뛸 수 있는 경우 - 3 점화식 세워서 푸는 문제였다. def solution(n): if n
여기서 문제 접근은 양수 음수 더하는 모든 경우의 수를 고려해야 하며 target값과 같아지는 경우를 세야한다는 것이다. DFS로 양수 루트, 음수 루트로 나누어서 시행하면 풀 수 있다. cnt = 0 def dfs(L, S, numbers, target): global cnt #숫자 최대 길이 max_len = len(numbers) #만약 level이 숫자 길이만큼 도달하면 #경우 하나 추가(target 값과 비교) if L == max_len: if S == target: cnt += 1 else: dfs(L+1, S + numbers[L], numbers, target) dfs(L+1, S - numbers[L], numbers, target) return cnt def solution(numbe..
https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 자리 수를 늘려가며 계속해서 소수가 맞는지 확인하는 것이 초점인 문제이다. 첫 자리의 경수 4,6,8,9는 이미 소수가 아니기 때문에 제외하고 2,3,5,7로 시작을 한다. 처음 예시 2 - 1 (소수판별) -> 소수가 맞다면 자리수 확장 후 다시 소수 판별... -> N 자리가 될 때까지 (21은 소수가 아니기에 다음은 23을 판별) 231로 확장 되고 231은 소수가 아니기에 다음은..
괄호 여닫으며 쌍 찾은 문제랑 동일한 구조였는데 문자열에 너무 집중한 나머지 투포인터로 풀려다가 시간초과가 나버렸다. def solution(s): stack = [] for w in s: if stack: if stack[-1] == w: stack.pop() else: stack.append(w) #스택에 아무것도 없으면 else: stack.append(w) if stack: answer = 0 else: answer = 1 return answer