1. 같은 숫자는 싫어
https://school.programmers.co.kr/learn/courses/30/lessons/12906
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(arr):
stack = []
for num in arr:
# 스택이 비어있거나, 스택의 마지막 값과 현재 값이 다르면 추가
if not stack or stack[-1] != num:
stack.append(num)
return stack
2. 이진탐색
finding_target = 14
finding_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
def is_existing_target_number_binary(target, array):
# 구현해보세요!
return False
result = is_existing_target_number_binary(finding_target, finding_numbers)
print(result)
이진 탐색을 이용해서 풀어보자
finding_target = 14
finding_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
def is_existing_target_number_binary(target, array):
current_min = 0
current_max = len(array) - 1
current_guess = (current_min + current_max) // 2
while current_min <= current_max:
if array[current_guess] == target:
return True
elif array[current_guess] < target:
current_min = current_guess + 1
else:
current_max = current_guess - 1
current_guess = (current_min + current_max) // 2
return False
result = is_existing_target_number_binary(finding_target, finding_numbers)
print(result)
3. 재귀함수
재귀은 어떤한 것을 정의할 때 자기 자신을 참조하는 것을 말한다.
팩토리얼
https://www.acmicpc.net/problem/10872
def fact(n) :
answer = 1
for i in range(1 , n+1):
answer *= i
return answer
print(fact(5))
# 5 * 4 * 3 * 2 * 1 = 120
def fact(n) :
if n == 1 :
return 1
return n * fact(n - 1)
# 5 * 4 * 3 * 2 * 1 = 120
print(fact(5))
4. 회문
https://www.acmicpc.net/problem/17609
문자열 반만 읽고 하나하나 맞춰보면 되지않얼까..
input = "abcba"
def is_palindrome(string):
answer = []
n = len(string)
for i in range(n) :
if string[i] != string[n - i -1] :
return False
return True
print(is_palindrome(input))
문자길이랑 현재 i 번째 를 뺀 끝에 애들이랑 비교해서 안같으면 false 반환하도록 짠다
슬라이싱을 사용하여 짜본다
input = "abcba"
def is_palindrome(string):
#맨 앞값과 맨 뒤에 값이 다르면 바로 false 반환하기
if string[0] != string[-1] :
return False
#맨위의 값과 뒤의 값이 같으면 바로 맨 앞의 앞의값과 맨 뒤에 바로 앞의 값까지만 자른다
#문자가 한 글자만 남을 경우에는 무조건 true 로 뽑는다.
if len(string) = 1:
return True
return is_palindrome(string[1:-1])
# string = "abcdef"
# string[1:]: 첫 번째 문자 이후부터 끝까지 (bcdef)
# string[:-1]: 처음부터 마지막 문자 바로 앞까지 (abcde)
# string[1:-1]: 첫 번째 문자 이후부터 마지막 문자 바로 앞까지 (bcde)
print(is_palindrome(input))
'코딩테스트' 카테고리의 다른 글
하루 코테 3개 풀기 - 16일차 (0) | 2024.12.28 |
---|---|
하루 코테 3개 풀기 - 15일차 (0) | 2024.12.24 |
하루 코테 3개 풀기 - 13일차 (0) | 2024.12.23 |
하루 코테 3개 풀기 - 12일 차 (0) | 2024.12.20 |
하루 코테 3개 풀기 - 11일 차 (0) | 2024.12.19 |