Algoritm 43

[programmers] LV2. 올바른 괄호

# 문제 풀이 def solution(s): answer = True a = [] for i in s: if i == '(': a.append(i) else: if len(a) == 0: return False a.pop() if len(a) == 0: return True else: return False - 대표적인 스택 문제 - '('가 나오면 스택에 append 하고, ')'가 나올 경우 스택에서 pop 시킴 단, 스택이 비어있을 경우 False를 반환 # 문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와..

[programmers] LV2. 최솟값 만들기

# 문제 풀이 def solution(A,B): answer = 0 A.sort() B.sort(reverse=True) for i in range(len(A)): answer += A[i] * B[i] return answer - sort() 내장 함수를 통해 문제 풀이 - 누적되는 값이 최소가 되도록 만들기 위해, 각 배열의 가장 작은 수와 가장 큰 수를 서로 곱하는 것이 최적의 방법 # 함수 정리 @ sort() ? - sort() 메서드는 리스트를 오름차순 및 내림차순으로 정렬하는 함수 - [].sort() -> 오름차순 - [].sort(reverse=True) -> 내림차순 # 문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/1..

[programmers] LV2. JadenCase 문자열 만들기

# 문제 풀이 def solution(s): answer = '' for idx, alpha in enumerate(s): if idx == 0 or s[idx - 1] == ' ': answer += alpha.upper() else: answer += alpha.lower() return answer - s.title() 내장 함수를 사용하여 해결하려 했지만, 첫 단어에 숫자가 나오는 경우 예외 사항이 발생 - enumerate() 함수를 사용하여 해결 - idx가 0인 경우나 앞써 나온 문자가 ' ' 공백일 경우 대문자 - 그 외는 모두 소문자로 해결 # 함수 정리 @ enumerate() - 시퀀스(리스트, 튜플, 문자열 등)을 입력 받아, 시퀀스의 각 요소에 인덱스를 부여하여 (인덱스, 요소) ..

[leetcode] 1141. User Activity for the Past 30 Days I

# 문제풀이 select activity_date as day, count(distinct user_id) as active_users from activity where datediff('2019-07-27', activity_date) = 0 group by activity_date; - activity 테이블에는 기본키가 없으며, 중복키가 허용됨 - distinct를 사용하여 user_id를 중복 제거 - datediff() 함수를 사용하여 날짜 차이 출력 * DATEDIFF() - 두 날짜 간의 차이를 일 수 로 계산하는 MySQL 내장 함수 - 첫 번째 인수에는 뒤에 오는 날짜 값과의 차이를 구할 기준 날짜를,..

Algoritm/leetcode 2023.04.19

[programmers] LV2. 최댓값과 최솟값

# 문제풀이 def solution(s): answer = '' a = list(map(int, s.split())) answer = str(min(a)) + ' ' + str(max(a)) return answer - python 내장 함수인 max(), min() 함수를 이용해서 해결 # 문제출처 https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr

[programmers] LV1. 두 개 뽑아서 더하기

# 문제풀이 from itertools import combinations def solution(numbers): answer = [] c = list(combinations(numbers, 2)) for i in c: answer.append(sum(i)) return sorted(set(answer)) - combinations(리스트, n) 을 사용하여, 2개의 수를 뽑아 나올 수 있는 경우를 출력 - set()을 이용해 중복 제거 후, sorted(리스트, key=조건, reverse=True/False)를 이용하여 오름차순으로 정렬 # 문제출처 https://school.programmers.co.kr/learn/courses/30/lessons/68644 프로그래머스 코드 중심의 개발자 채용..

[programmers] LV1. 숫자 문자열과 영단어

# 문제풀이 def solution(s): answer = '' dict = { "zero" : "0", "one" : "1", "two" : "2", "three" : "3", "four" : "4", "five" : "5", "six" : "6", "seven" : "7", "eight" : "8", "nine" : "9" } a = '' for i in s: if i.isdigit(): answer += i elif i.isalpha(): a += i if a in dict.keys(): answer += dict[a] a = '' return int(answer) - dict{key:value} 를 이용해 해결 - 문자열에서 isdigit()와 isalpha()를 통해 숫자인지, 문자열인지 확인 ..

[programmers] LV1. [1차] 비밀지도

# 문제풀이 def solution(n, arr1, arr2): answer = [] for i in range(n): # 10진수로 or 연산 후 2진수로 변환 tmp = bin(arr1[i] | arr2[i]) # 앞에 0을 붙이고 싶을 때 사용하는 함수 'zfill' tmp = tmp[2:].zfill(n) tmp = tmp.replace('1', '#').replace('0', ' ') answer.append(tmp) return answer - bin() 내장 함수와 zfill(), replace()를 이용하여 해결하였다. - 솔직히 zfill() 함수는 처음 본다... - 풀이를 하자면 arr1[i] 와 arr2[i] 리스트를 or 연산자 ('|')를 사용하여 연산 후 bin() 함수를 사용..

[programmers] LV1. 문자열 내 마음대로 정렬하기

# 문제풀이 def solution(strings, n): strings.sort() answer = sorted(strings, key=lambda x:x[n]) return answer - sorted() 내장 함수, lambda를 이용하여 해결 - sorted(리스트, key=기준, reverse=True/False) # 문제출처 https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr

[programmers] LV1. 문자열 다루기 기본

# 문제풀이 def solution(s): if len(s) == 4 or len(s) == 6: if s.isdigit() == True: return True else: return False else: return False - isdigit() 내장 함수를 이용해서 s 문자열이 숫자인지 확인 # 문제출처 https://school.programmers.co.kr/learn/courses/30/lessons/12918 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr