본문 바로가기
  • AI 개발자가 될래요

Category105

[Python/코테 공부] 1로 만들기 [Python/코테 공부] 1로 만들기 내 풀이 무작정 모든 원소를 탐색해서 나누기 계속하는 것 보다, 어떤 규칙성이 있을 것 같아서 노트에 정리해보았다. 규칙성을 찾다 보니, n이 1일 때는 0, 그 외에는 i가 1씩 늘어날 때 2^i 이상 2^(i+1) 미만에서 i번 만큼의 연산을 하는 것을 찾았다. 그래서 이를 아래와 같은 코드로 작성했다. def solution(num_list): answer = 0 for n in num_list: if n == 1: continue for i in range(1, 5): if n >= 2**i and n < 2**(i+1): answer += i break return answer 테스트 결과 효율이 아주 나쁜것은 아니지만, 그래도 for문을 2번 사용하긴 한.. 2023. 11. 3.
[Python/코테공부] 2의 영역 [Python/코테공부] 2의 영역 내 풀이 def solution(arr): answer = [i for i, v in enumerate(arr) if v==2] return arr[answer[0]:answer[-1]+1] if len(answer)>0 else [-1] 테스트 결과 다른 사람은 반복문을 사용하지 않고 풀어서 정리한다. 다른 사람의 풀이 def solution(arr): if 2 not in arr: return [-1] return arr[arr.index(2) : len(arr) - arr[::-1].index(2)] 테스트 결과 확실히 인덱스 찾고 슬라이싱만 하니 속도가 더 빠르다. * 문제 출처 프로그래머스 https://school.programmers.co.kr/learn/.. 2023. 11. 2.
[Python/코테공부] 세로 읽기 [Python/코테공부] 세로 읽기 나의 풀이 def solution(my_string, m, c): return ''.join([my_string[i*m + (c-1)] for i in range(len(my_string)//m)]) 테스트 결과 다른 사람의 풀이 def solution(my_string, m, c): return my_string[c-1::m] 슬라이싱은 정말 위대하다. 테스트 결과 * 문제 출처 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/181904 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.. 2023. 11. 2.
[Python/코테공부] 배열 만들기 4 [Python/코테공부] 배열 만들기 4 나의 풀이 def solution(arr): stk = [] i = 0 while i 0: if arr[i] > stk[-1]: stk.append(arr[i]) i += 1 else: stk.pop() else: stk.append(arr[i]) i += 1 return stk 직관적이다. 테스트 결과 시간이 좀 걸린다. 다른 사람의 풀이 def solution(arr): stk = [] for i in range(len(arr)): while stk and stk[-1] >= arr[i]: stk.pop() stk.append(arr[i]) return stk 반복문의 조건 설정을 매우 잘했다. 테스트 결과 시간 .. 2023. 10. 31.
[Python/코테공부] 배열 만들기 2 [Python/코테공부] 배열 만들기 2 내 풀이 def solution(l, r): answer = [i for i in range(l, r + 1) if not(set(str(i))-{'0', '5'})] return answer if len(answer)>0 else [-1] 풀리긴 한다. 근데 특정 테스트 케이스에서 시간이 오래 걸렸다. 테스트 결과 다른 사람의 풀이 def solution(l, r): answer = [] i = 1 n = 5 while True: if n > r: break n = 5 * int(bin(i)[2:]) if l 2023. 10. 31.
[Python/코테공부] 코드 처리하기 [Python] 코드 처리하기 내 풀이 사실 푸는데 애 좀 먹었다. 문제 이해를 잘못해서.. 전체 문자열의 인덱스에 대해 홀짝을 계산했어야 하는데 split된 문자열에 대해 계산해서 오류가 나왔다. 그래서 고친 코드는 이거다. def solution(code): # code = "abc1abc1abc" answer = '' mode = 0 idx = 0 for c in code: if c== '1': mode = abs(mode-1) idx += 1 continue elif (idx+mode)%2 == 0: answer += c idx +=1 else: idx +=1 return answer if len(answer) != 0 else "EMPTY" 테스트 결과 풀리긴 했다만 시간이 좀 걸렸다. 다른 사.. 2023. 10. 31.