전체 글 560

[프로그래머스] n^2 배열 자르기

# 왼쪽, 오른쪽 사이에 해당하는 값으로 몫과 나머지를 구한 다음 큰 값에 +1 시켜줘서 추가해주기 def solution(n, left, right): result = [] for i in range(left, right+1): x, y = i//n, i%n if x >= y: result.append(x+1) else: result.append(y+1) return result # 시간초과 # 해당 풀이는 처음 접근한 방식으로 2차원 배열처럼 생각을 한 상태로 # 2중 for문을 돌려 해결해보려 했음. # 추후 시간 초과로 인해 첫번째 for문에서 left 값보다 cnt 값이 더 작으면 # n만큼 cnt에 추가해주는 형식으로 시간을 줄이려 했지만 엄청 빡빡한 타임으로 안됨... def solution..

알고리즘 2023.06.21

[프로그래머스] 연속 부분 수열 합의 개수

# 원래 dic의 값이 0 이 아닐때도 조건문을 통해 제어를 했는데 굳이 인가 싶어서 뺌 # 아래 코드보다 시간 효율이 더 좋음 def solution(elements): dic, ln = {i:0 for i in range(sum(elements)+1)}, len(elements) for i in range(ln): hap = elements[i] dic[hap] = hap for j in range(i+1, i+ln): hap += elements[j%ln] dic[hap] = hap return len([ i for i in list(dic.values()) if i != 0]) # 연결 리스트로 푼게 아닌 기존 배열을 두배로 늘려서 하다보니 엄청 시간이 길어짐 # 풀어지긴 함 def solutio..

알고리즘 2023.06.20

[프로그래머스] H-Index

# 정답 def solution(citations): h, c_ln, result = 0, len(citations), 0 for i in range(1, c_ln+1): ln = len([j for j in citations if j >= i]) if not (ln >= i): break elif ln >= i: result = i return result # 실패 # 이유는 8번 줄의 if not 부분으로 가는 경우가 없이 # for 문이 정상으로 마무리 되는 경우가 있기 때문! 9번 Case!! def solution(citations): h, c_ln, result = 0, len(citations), 0 for i in range(1, c_ln+1): ln = len([j for j in cit..

알고리즘 2023.06.19

[프로그래머스] 괄호 회전하기

# deque를 가져와서 rotate를 사용함으로 회전을 편하게 할 수 있었음. from collections import deque def solution(s): l_s = len(s) if l_s%2: return 0 q, cnt = deque(s), 0 for _ in range(l_s): flag, stack = True, [] for i in range(l_s): if q[i] in ['[', '{', '(']: stack = stack + [q[i]] else: if stack == []: flag = False break else: if (stack[-1] == '[' and q[i] == ']') or (stack[-1] == '{' and q[i] == '}') or (stack[-1] ..

알고리즘 2023.06.15

[프로그래머스] N개의 최소공배수

# 유클리드 호제법을 활용한 풀이 # 해당 문제에서 import math로 사용한 lcm을 사용할 수 없었다. 왜지..? def gcd(x,y): while y: x,y = y, x%y return x def lcm(x,y): return (x*y)//gcd(x,y) def solution(arr): result = 0 for i in arr: if result == 0: result = i else: result = lcm(result, i) return result # import math로 사용한 풀이 def solution(arr): result = 0 for i in arr: if result == 0: result = i else: result = math.lcm(result, i) retur..

알고리즘 2023.06.13