본 내용은 'Manifest Android Interview'를 읽고 개인적으로 개념 복기를 위한 설명, 헷갈리거나 어려웠던 점 등을 책 외부의 공식문서등의 자료로 정리한 내용입니다. 안드로이드의 Intent는 컴포넌트 사이에서 작업을 요청하거나 데이터를 전달할 때 사용하는 메시지 객체입니다. 이번 글에서는 명시적 인텐트, 암시적 인텐트, 인텐트 필터, PendingIntent의 차이를 중심으로 정리합니다.1. 개념 정리IntentIntent는 수행할 작업을 표현하는 객체입니다.Activity를 실행하거나, Broadcast를 보내거나, Service를 시작할 때 사용할 수 있습니다. 또한 putExtra()를 통해 컴포넌트 사이에 데이터를 전달할 수 있습니다.val intent = Intent(this..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문자열 배열을 특정 인덱스의 문자를 기준으로 정렬하는 문제입니다. 핵심은 1차 정렬 기준은 n번째 문자, 2차 정렬 기준은 문자열 전체의 사전순으로 두는 것입니다.1. 나의 풀이def solution(strings, n): strings.sort(key=lambda x: (x[n], x)) return stringskey에 튜플을 사용하여 정렬 기준을 두 개로 지정했습니다.첫 번째 기준은 x[n]으로, 각 문자열의 n번째 문자입니다. 두 번째 기준은 x로, n번째 문자가 같은 경우 문자열 전체를 사전순으로 비교하도록 했습니다.2. 오늘 배운 점 및 복기..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krH-Index는 h번 이상 인용된 논문이 h편 이상이 되는 h의 최댓값을 찾는 문제입니다. 핵심은 인용 횟수를 정렬한 뒤, 가능한 h 값을 논문의 개수 기준으로 줄여가며 검사하는 것입니다.1. 나의 풀이 def solution(citations): citations = sorted(citations, reverse=True) h_index = len(citations) while h_index > 0: if citations[h_index - 1] >= h_index: break h_index -= 1 ..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr서로 다른 인덱스의 두 수를 뽑아 만들 수 있는 모든 합을 구한 뒤, 중복을 제거하고 오름차순으로 정렬하는 문제입니다. 핵심은 combinations, set, sorted를 순서대로 연결하는 것입니다.1. 나의 풀이from itertools import combinationsdef get_pair_sums(numbers): return set(map(sum, combinations(numbers, 2)))def solution(numbers): pair_sums = get_pair_sums(numbers) return sorted(pair_sums..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr연산자 +, -, *의 우선순위를 바꿔가며 수식을 계산하고, 그 결과의 절댓값 중 최댓값을 구하는 문제입니다.핵심은 3! = 6가지 우선순위를 모두 탐색하고, 각 우선순위에 맞게 수식을 직접 계산하는 것입니다.1. 나의 풀이import refrom itertools import permutationsdef apply_operator(tokens, op): result = [] i = 0 while i 2. 오늘 배운 점 및 복기 노트완전탐색 가능성 판단연산자는 +, -, * 세 개뿐이므로 가능한 우선순위는 \(3! = 6\)가지입니다.수식 길이도..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이 문제는 응모자 아이디 목록에서 가려진 제재 아이디 패턴에 매칭되는 모든 경우의 수를 구하는 문제입니다. 핵심은 제재 아이디의 순서가 달라도 구성 요소가 같으면 동일한 경우로 처리해야 하는 중복 제거 로직과, 효율적인 탐색을 위한 비트마스킹 활용입니다.1. 나의 풀이최종적으로 비트마스킹과 DFS를 결합하여 공간 복잡도와 중복 제거 효율을 극대화한 코드입니다.import redef solution(user_id, banned_id): # * 문자를 정규표현식 매칭을 위해 . 문자로 치환 ban_patterns = [x.replace('*', '.') fo..