전체 글 230

프로그래머스 - 혼자 놀기의 달인

https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제를 읽었을때- 임의로 카드를 선택해야하고 -> 다 확인을 해봐야한다.- 열어야 하는 상자가 이미 열려있을때 까지 반복 -> visit 배열을 사용할 것를 읽고 dfs 를 써보면 어떨까 싶었다. 그러나 일반적인 dfs 문제처럼 깊이나 도달해야하는 조건이 존재하지는 않고방문을 할 수 없을때까지 그냥 반복시키면 됐다. 카드 배열 첫번째부터 다 확인을 시작한다.그리고 문제 조건에 맞게 예제를 설명해보면..

알고리즘 2024.08.26

프로그래머스 - 연속 부분 수열 합의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/131701 문제를 처음부터 잘못 이해하기도 했고, 너무 어렵게 생각했다.항상 문제를 볼때 어렵게 생각하지 말고 쉬운 생각부터 하나씩 해보자 핵심은 - copyOfRange 로 연속 부분 수열을 만들기- set 을 이용해서 중복을 제거하기- 원형이라는 조건이기 때문에  elements 의 두배가 되는 array 를 만들어놓기 class Solution { fun solution(elements: IntArray): Int { var answer: Int = 0 val newArr = IntArray(elements.size * 2) { 0 } for (i in..

알고리즘 2024.08.26

프로그래머스 - 택배상자

https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 스스로 풀지 못한 문제다.stack 을 사용하고 하나의 for 문을 쓰면서 트럭에 싣을때마다 target 이라는 int 를 증가시키면서남은 배열과 stack 에서 우선순위에 맞게 트럭에 싣을 수 있는 택배가 있는지 체크한다. 라는 생각은 했는데 처음 우선순위를 확인하기 위한 전처리를 생각하지 못했다. import java.util.*class Solution { fun solution(orde..

알고리즘 2024.08.25

프로그래머스 - 삼총사

https://school.programmers.co.kr/learn/courses/30/lessons/131705?language=kotlin 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 조합 알고리즘을 사용하는 전형적인 문제다. 조합을 이용해서 3개를 뽑았을때 3개의 합이 0 인 경우면 answer 값을 증가시켜주면 된다.class Solution { var max = 3 // 뽑을 숫자 개수 lateinit var result: Array // 뽑은 결과 var answer: Int = 0 fun solution(number: I..

알고리즘 2024.08.25

라이브러리를 배포해보자.

스스로 만든 라이브러리를 배포해보는건 안드로이드 개발자를 시작할때부터 버킷리스트 중하나였다. 이번에 샘플프로젝트를 업데이트 하면서 이미지 crop 하는 커스텀 뷰를 개발했는데아직 완성도가 높진 않지만 라이브러리로 따로 빼서 관리해보고 싶다는 생각을 했다. 그래서 시간도 많겠다 뚝딱 해봤다. 아 참 jitPack 을 이용해서 배포한다! 1. 라이브러리를 만들기 위해 모듈을 생성해보자프로젝트를 새로판다.그럼 기본적으로 app 모듈이 있을텐데 이건 일단 냅두고모듈을 하나 새로 만들어보자. new Module 을 누르고 Android Library 로 만든다. 이렇게 해서 생긴 모듈이 실제 사용되는 라이브러리가 될 예정이다. 2. 라이브러리가 될 모듈에 라이브러리화 시키고 싶은 기능들을 넣는다.나의 경우는 샘플..

Android 2024.08.24

프로그래머스 - 콜라 문제

https://school.programmers.co.kr/learn/courses/30/lessons/132267?language=kotlin 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 그대로 수식만 세우면 풀린다.class Solution { fun solution(a: Int, b: Int, n: Int): Int { var answer: Int = 0 var count = n // count 를 줄여가면서 최소로 가져가야하는 숫자인 a 보다 작아지면 while 탈출 whi..

알고리즘 2024.08.21

프로그래머스 - 햄버거 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에 문제가 무슨 말인지 이해를 못했다.결국 핵심은 햄버거는  빵-야채-고기-빵  으로 순서가 주어질때만 햄버거로 만들 수 있고햄버거로 만들어지면 기존 재료 list 에서는 빼줘야한다는거다.그렇게 햄버거를 몇개까지 만들 수 있냐는 문제인데 결국 빵-야채-고기-빵 이라는 하나의 패턴이 재료 list에 있는 문제라고 생각했고처음에는 아래처럼 풀었다.class Solution { fun solut..

알고리즘 2024.08.21

프로그래머스 - 푸드 파이트 대회

https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명은 길지만 결과 문자열 중간에는 물을 의미하는 "0" 이 무조건 와야하고왼쪽에서 먹기 시작하는 사람 , 오른쪽에서 먹기 시작하는 사람이 동일하게 음식을 먹어야하기 때문에문자열은 좌우 대칭이 되어야한다. 좌우대칭이 되려면 음식은 짝수개로만 쓸 수 있는데 주어진 음식이 홀수개인 경우는 (food[i] / 2).toInt() 2로 나누고 정수형으로 변경해줬다.이렇게 하면 음식이 1번 음식이 3개 ..

알고리즘 2024.08.21

Android Compose 의 @Immutable 와 @Stable

Jetpack Compose에서 @Immutable와 @Stable 어노테이션은 컴포저블 함수의 리컴포지션을 최적화하는 데 중요한 역할을 합니다. 각각의 어노테이션은 특정한 상황에서 사용되며, 사용하는 것과 사용하지 않는 것에 따라 성능에 미치는 영향이 달라집니다.1. @Immutable@Immutable 어노테이션은 클래스가 불변(immutable)임을 명시합니다. 불변 객체는 상태가 변경되지 않기 때문에, Jetpack Compose는 해당 객체가 변경되지 않는다고 가정하고 리컴포지션을 피할 수 있습니다.언제 사용할까?@Immutable은 객체가 불변이며, 내부의 모든 필드도 불변 객체일 때 사용합니다. 이는 데이터 클래스와 같은 경우에 자주 사용됩니다.예시:@Immutable data class U..

프로그래머스 - 과일장수

문제 설명과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다.한 상자에 사과를 m개씩 담아 포장합니다.상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다.과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다)예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻..

알고리즘 2024.08.20