TIL/Coding Study - python 10

[programmers] Lv.2 짝지어 제거하기

문제: 짝지어 제거하기 코딩테스트 연습 - 짝지어 제거하기 | 프로그래머스 스쿨풀이코드def solution(s): stack = [] for i in s: if not stack: stack.append(i) elif stack[-1] == i: stack.pop() else: stack.append(i) if len(stack) == 0: return 1 else: return 0느낀 점처음에 너무 헤매서 GPT 선생님에게 '답은 절대 절대 알려주지 말고 힌트만 줘!!' 라고 도움을 청했는데 스택을 사용하라고 했다. Stack? 스택은 자료구조 전공 때 배..

[programmers] Lv.2 이진 변환 반복하기

문제: 이진 변환 반복하기코딩테스트 연습 - 이진 변환 반복하기 | 프로그래머스 스쿨풀이코드def solution(s): i = 0 c = 0 while s != '1': c += s.count('0') s = bin(len(s.replace('0', '')))[2:] i += 1 answer = [i, c] return answer느낀 점!! replace는 기존 문자열을 수정하지 않고 새로운 문자열을 반환하기 때문에 변수 할당을 해줘야 한다. !! bin() 함수로 바꾸면 '0b~~' 로 바뀌기 때문에 '0b'를 제거해주어야 한다.  0b는 이진수임을 나타내기 위한 수라고 한다. 나는 슬라이싱을 이용해 제거해주었다.  아니 이 문제가 ..

[programmers] Lv.2 올바른 괄호

문제: 올바른 괄호코딩테스트 연습 - 올바른 괄호 | 프로그래머스 스쿨풀이코드def solution(s): c = 0 for i in s: if i == '(': c += 1 else: c -= 1 if c 느낀 점어디서 많이 본 문제다.. 조건을 정리하기 위해 False가 되는 조건을 적어보았다. 1. ')'가 먼저 나오는 경우2. '('가 맨 마지막에 위치하는 경우3. ()가 짝이 안 맞는 경우그래서 그냥 간단하게 3번 조건은 count만 써서 짝이 맞게끔 조건을 맞춰주면 된다고 생각했다. def solution(s): if s[0] == '(' and s[len(s)-1] == ')'and s.count('..

[programmers] Lv.2 최솟값 만들기

문제: 최솟값 만들기코딩테스트 연습 - 최솟값 만들기 | 프로그래머스 스쿨풀이코드def solution(A,B): A.sort() B.sort(reverse=True) return sum(map(lambda x,y: x*y, A, B))느낀 점이 문제를 풀기 위해선 꼭 알아야 하는 게 있다!바로 길이가 같은 자연수로 이루어진 배열이 2개 있을 때 각각 숫자 하나씩 뽑아 두 수를 곱하고 그 수들을 합할 때 최솟값을 만드려면 어떻게 해야할지 알아야 한다는 것이다. 생각해봤을 때 이 문제는 배열의 숫자들을 최적의 순서로 선택해 최소의 곱셈 합을 만들면 된다. 최소의 곱셈 합을 만드려면 큰 수 x 큰 수를 하지 않고 작은 수 x 큰 수를 해야만 곱셈 결과가 최소화되는 것을 알 수 있다. 처음엔 ..

[programmers] Lv.2 최댓값과 최솟값

문제: 최댓값과 최솟값코딩테스트 연습 - 최댓값과 최솟값 | 프로그래머스 스쿨풀이코드def solution(s): l = [] for i in s.split(): l.append(int(i)) M = max(l) m = min(l) answer = str(m) + ' ' + str(M) return answer느낀 점다른 사람들 풀이를 보면서 map 함수 사용법에 대해 잘 알고 코드를 좀 더 간략하게 쓸 줄 알아야겠다는 생각을 또 했다... 다른 사람 풀이를 살펴보기 전에 map 함수를 공부해보자!일단 map 함수는 여러 개의 데이터를 받아서 각각의 요소에 함수를 적용한 결과를 반환하는 함수로 리스트, 튜플 등의 iterable한 객체를 입력으로 받을 수 있다..

[programmers] 기초 Day5 조건문

문제 1) 등차수열의 특정한 항만 더하기코딩테스트 연습 - 등차수열의 특정한 항만 더하기 | 프로그래머스 스쿨 풀이코드def solution(a, d, included): answer = 0 for i in range(len(included)): if included[i] == True: answer += (a+d*i) return answer문제 2) 주사위 게임 2코딩테스트 연습 - 주사위 게임 2 | 프로그래머스 스쿨풀이코드def solution(a, b, c): answer = 0 l = len(set([a,b,c])) if l == 3: answer = (a + b + c) elif l == 2: an..