👨🏻💻알고리즘

[프로그래머스] Lv2. 요격 시스템
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(targets): targets.sort(key=lambda x : x[1]) now = targets[0] answer = 1 for s, e in targets: if now[1]

[프로그래머스] Lv2. 전화번호 목록
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(phone_book): phone_book.sort() if len(phone_book) == 1: return True for i in range(len(phone_book)-1): if phone_book[i+1].startswith(phone_book[i]): return False return True 풀이 전화번호가 문자열이므로, 정렬시 아스키코드..

[프로그래머스] Lv3. 정수 삼각형
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(triangle): answer = [[0]*i for i in range(1,len(triangle)+1)] answer[0][0] = triangle[0][0] for j in range(2): answer[1][j] = triangle[0][0] + triangle[1][j] for i in range(2,len(triangle)): answer[i]..

[프로그래머스/Python] Lv2. 점프와 순간이동
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12980?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(n): answer=0 while n > 0: answer += n%2 n //= 2 return answer 풀이 배터리 사용량을 최소로 하기 위해선 가능한 순간이동을 해야한다. 반대로 n에서 0까지 가는 방법으로 생각해보면, n이 2로 나눴을때 나머지가 n에서 2로 나누기 위해 점프해야 하는 거리이므로 answer에는 n%..

[프로그래머스/Python] Lv2. N개의 최소공배수
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 import math def solution(arr): total = arr[0] for i in arr[1:]: total = total*i//math.gcd(total,i) return total 풀이 파이썬의 math 모듈의 gcd()는 인자로 받은 값들의 최대공약수를 구해준다. 파이썬 3.9부터 지원하는 최소공배수를 구하는 lcm() 함수도 있으나, 프로그래머스의 파이썬은..

[프로그래머스/Python] Lv2. 예상 대진표
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12985# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(n,a,b): cnt = 1 while True: if (b%2 == 0 and a + 1 == b) or ((a%2==0) and b + 1 == a): return cnt a = (a + 1) //2 b = (b+1) //2 cnt += 1 풀이 만약, a와 b가 처음 대결할 경우 첫번째 라운드이므로 cnt를 1로 초기화해준다. 만약 8명이 대결할 경..

[프로그래머스/Kotlin] Lv1. x만큼 간격이 있는 n개의 숫자
문제 링크: 코드 class Solution { fun solution(x: Int, n: Int): LongArray = LongArray(n) { x.toLong() * (it + 1) } } 풀이 코틀린에서 LongArray(size) {} 는 배열을 초기화하는 방법 중 하나로, {} 괄호 안의 람다식으로 인덱스별로 초기화를 할 수 있다. 인덱스 0부터 n-1까지 x.toLong * ( 인덱스 + 1)의 연산 값으로 각 인덱스를 초기화해준다.

[프로그래머스/Kotlin] Lv1. 자릿수 더하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12931?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 class Solution { fun solution(n: Int): Int { var answer = 0 n.toString().map { answer += it.digitToInt() } return answer } } 풀이 코틀린에서 char 타입을 int 타입으로 변환하는 toInt() 메서드는 deprecated 되었다. 그래서 찾아보니 di..

[프로그래머스/Kotlin] Lv1. 평균 구하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12944?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 class Solution { fun solution(arr: IntArray): Double { return arr.average() } } 풀이 코틀린에서 IntArray타입의 평균을 구해주는 메서드 average()를 사용하면 된다. IntArray의 경우 intArrayOf()로 초기화를 할 수 있다.

[프로그래머스/Python3] Lv2. 구명보트
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 from collections import deque def solution(people, limit): cnt = 0 people.sort() q = deque(people) while q: if len(q) >= 2: if q[0] + q[-1]