전체 글109 프로그래머스 Lv1 [1차] 다트 게임 (python) [1차] 다트 게임 풀이 문제가 길어서 그렇지 잘 읽어보면 금방 풀린다. 잠깐 시간을 끈 구간이 있는데 해당 구간이 숫자 10과 0을 처리하는 구간이었다. for문을 사용하고 있었는데, 그러니 뭔가 꼬인 게 있어서 while문을 사용해서 인덱스에 +1을 더 해줌으로 해결했다. 다음처럼 풀었다. 1. 숫자인지 영어인지 둘 다 아닌지 판단. 2. 숫자이면 v_list에 입력 3. S D T 라면 v_list[-1]에 해당 제곱수만큼 곱하기 4. '*' 이라면 v_list [-1]과 v_list [-2]에2 길이가 1이라면 v_list [-1]에만 적용 5. '#'이라면 v_list[-1]에 -1배 적용 # 신규 서비스 다트 게임은 세 차례 던져 점수 합계로 실력을 겨룸 # 0 - 10점이며, S,D,T 영역.. 2024. 1. 30. 프로그래머스 Lv1 부족한 금액 계산하기 (python) 부족한 금액 계산하기 풀이 한 번 탈 때마다 price 요금을 더 내야 하는 이상한 놀이기구이다. 얼마나 인기가 많으면 이렇게 배짱장사를 할까... 간단하게 풀어진다. 반복문을 돌리면서 count만큼 탔을 때의 비용을 계산한다. 내가 들고 있는 돈과 비용을 계산하고 그에 따른 답을 반환한다. # price원 -> N번째시 price * N def solution(price, money, count): i = 0 whole_price = 0 while i money: return whole_price - money else: return 0 다른 사람 풀이 max()함수를 사용하고 또한, 수학적으로 값을 계산.. 2024. 1. 30. 프로그래머스 Lv2 예상 대진표 (python) 예상 대진표 풀이 처음에는 a와 b의 거리 차이로 풀려고 생각을 했어서 아래처럼 풀었다. def solution(n,a,b): answer = 0 value1, value2 = (a-1)//2, (b-1)//2 quotient = 1 for i in range(1, 21): if 2**i == n: quotient = i break if abs(value1-value2) + 1 > quotient: return quotient else: return abs(value1-value2) + 1 하지만 이러니 추가 테스트케이스로 8, 4, 5, 1의 경우에 틀리게 되어서 이 방법은 폐기하였다. 그래서 다른 방법을 시도하였다. 경기를 몇 번 뛰었는지를 확인하면 되는 것이기에 처음에 대진자와의 짝을 맞춰주기 위해.. 2024. 1. 30. 프로그래머스 Lv2 JadenCase 문자열 만들기 (python) JadenCase 문자열 만들기 풀이 처음에는 간단하게 title()을 쓸까 했지만 문제에서 숫자 다음은 그냥 소문자로 이어지도록하라 했기에 쓸 수 없었다. 그리고 다른 방법으로 capitalize()를 아래처럼 사용해봤다. def solution(s): s_list = list(map(str, s.split())) for i in range(len(s_list)): s_list[i] = s_list[i].capitalize() return ' '.join(s_list) 하지만 위의 방법도 결국 제한 조건에서 '공백문자가 연속해서 나올 수 있습니다.'라는 조건으로 인해 예시로 "for the last week"의 경우에는 해결할 수 없었다. 결국 조금 코드가 길어지긴 하지만 아래의 방법을 사용했다. 문자.. 2024. 1. 30. 프로그래머스 Lv2 올바른 괄호 (python) 올바른 괄호 풀이 문제 유형도 스택/큐 로 되어있었고, 문제를 푸는 방법도 스택이 편하기에 스택을 이용한 방법으로 풀었다. 1. stack을 만들어둠 2. 열린괄호 '('면 stack에 넣고, 닫힌 괄호 ')'면 stack에서 열린괄호'('를 빼는데, 이때 stack이 비어있으면 False 반환 3. 문자열을 끝까지 확인후 stack에 값이 남아있으면, 짝이 맞지 않는 경우이니, False를 반환 4. 이외의 상황은 True 반환 # ( 가 하나 있으면 )도 하나 있어야함. # 하지만 )( 는 안되고 () 순이어야함. # 스택을 이용해보자 # 스택에는 ( 만을 넣고 반복문을 돌리면서 )게 나온다면, 에서 확인하기 def solution(s): stack = [] for i in range(len(s)):.. 2024. 1. 29. python divmod() 사용하기 나누기 연산 나누기 연산을 할 경우 보통 일반 나누기는 10 / 2# 5.0 로 / 연산자를 이용해서 나눈다. 그리고 몫이 필요한 연산이 필요하다면 10 // 2# 5 로 // 연산자를 이용한다. 또한 나머지가 필요한 연산이 필요하다면 10 % 2 # 0 % 연산자를 이용한다 알고리즘 문제를 풀다보면 단순 나누기를 사용해야할 경우도 많지만, 몫만 필요하거나, 나머지만 필요하거나 또는 몫과 나머지 둘 다 사용해야하는 경우가 있다. 관련된 예로는 시간 계산과 같은 알고리즘 문제를 풀 때가 있을 것이다. 이럴 때 사용하기 좋은 게 python에서 제공해주는 divmod() 함수라고 생각된다. divmod() divmod()를 사용하게되면 몫과 나머지를 동시에 제공해준다. 10을 3으로 나눴을 때, 몫과 나머지.. 2024. 1. 29. 이전 1 ··· 13 14 15 16 17 18 19 다음