수원 오목천동 도나스데이 본점
·
주저리주저리/카페
도나스데이는 저번에 친구집 근처에서 발견한 잠봉뵈르 맛집이었다. 정말 오랜만에 잠봉뵈르가 먹고 싶기도 했고기본적으로 파는 빵이 다 괜찮다는 평이 자자해서 처음으로 본점에 다녀왔다. 입구보다시피 총 3층짜리 건물이고 옥상에는 테라스 자리가 있다. 일단 저 따뜻한 조명이 되게 편안한 분위기를 만들어주는 듯 했다. 자리부터 잡아앉아서 커피를 즐길 수 있는 좌석도 참 여러가지였는데개인적으로 가장 분위기가 마음에 드는 자리를 찍어보았다.(이래놓고 다른 자리에 앉았지만..) 다시 1층가서 주문하고 오자매우 신난 기분으로 뭘 먹어볼까 고민하러 1층으로 내려갔다.(속으로는 이미 잠봉뵈르를 하나 찜해두었다.) 하지만.. 잠봉뵈르는 없는걸?! 얼떨결에 전에 못봤던 대파크림도넛을 주문해버렸다. 대파크림도 진짜 좋아하기 때문..
전국 대회 선발 고사 코틀린(Kotlin)
·
프로그래머스
이번 문제는 지나가다 정답률이 낮은 문제를 발견해 풀어보았다. 이전과는 다르게 두 가지 방식으로 문제를 풀어보았는데여러 자료형을 오가면서 풀어볼 수 있어서 나름 좋은 문제였다고 생각한다. 문제풀이 1. map -> list 변환가장 처음 생각한 방식이다. rank배열의 값과 인덱스가 모두 필요한 상황이었기 때문에 list만으로는 풀 수가 없다는 판단을 내렸다. 그래서 key, value로 저장할 수 있는 map을 선택했다. 이 때, rank배열의 각 값으로 key를 해당 index로 value를 지정했다. 그래야 참석 여부에 따라 map에 저장한 key로 정렬할 수 있기 때문이다. 정렬 이후에는 다시 리스트로 변환하여 가장 앞에서부터 3개의 값을 꺼내 값을 만들어 리턴해주었다. 풀이 2. list로 풀기..
왼쪽 오른쪽 코틀린(Kotlin)
·
프로그래머스
오늘 풀어본 문제는 코틀린에서 forEach를 사용해보고,여기서 continue와 break 역할을 어떻게 대체하면 좋을지 다시 복습해보는 과정이었다. 문제문제는 l과 r이 나오는 시점에서 배열을 좌우로 자르면 되는 문제이다. 다만 위에서 잠시 언급했듯 break와 continue를 사용해야하는 이유가 문제에 있다. 배열을 좌우로 자르는 시점에서는 break가,그렇지 않은 경우에는 continue가 필요하다. 풀이 먼저 forEachIndexed를 사용해 반복문을 대체 해주었고,이 때 기존 Java처럼 continue, break는 사용할 수 없기에run scope 함수로 감싸주었다. 그리고 나서, continue가 필요한 지점은 forEachIndexed를 리턴해주었고break가 필요한 지점은 run ..
Android Fold Device 대응하기
·
Dev experience/Android
기능이 필요해진 배경이번에 새로운 앱을 준비하며 폴드(플립이 아닌) 디바이스인지 확인해야만 하는 상황이 생겼다. 그렇게 폴드 디바이스인 경우, layout constraints를 조정해 다른 UI를 구성해주기 위함이었다. 다만, 폴드 디바이스를 어떻게 체크할 것인가에 대해 찾아보던 중"2가지 조건을 충족하면 폴드 디바이스다!" 라는 결론을 낼 수 있었다. 1번째 조건WindowInfoTracker를 사용해 폴더블 디바이스인지 확인하는 것이다. developer 사이트 문서에서 확인해보면WindowInfoTracker에서 FoldingFeature가 있는 경우, 폴더블 디바이스라는 것을 알 수 있다. https://developer.android.com/develop/ui/compose/layouts/ad..
[PCCE 기출문제] 7번 / 버스 자바(Java)
·
프로그래머스
최근 풀었던 기출문제 시리즈를 이어서 풀어보다저번에 풀었던 7번 문제와 비슷한 유형이라 다시 한 번 글을 올리게 되었다. 저번 문제도 비슷하게 기존에 정의된 함수가 있고정답을 리턴하는 함수에서 어떻게 호출할 지를 정했었다. 문제주어진 배열에서 On이면 승차 Off이면 하차임을 의미한다. 그리고 곧장 풀이로 넘어가서 설명을 같이해보겠다. 풀이먼저 num_passenger 변수에는 승하차로 인해 총 몇 명이 타고 있는지를 저장해야 한다. 여기서 사용할 수 있는 함수에는 func1,2,3,4가 있다. 여기서 3번은 하차하는 인원을 세는 함수, 4번은 승차하는 인원을 세는 함수이다. 그렇게 계산이 끝난 num_passenger 변수와기존 파라미터로 주어진 seat 수를 사용해 남은 좌석 수를 리턴하게 된다. 이..
바탕화면 정리 코틀린(Kotlin)
·
프로그래머스
오늘은 AI가 추천해준 문제를 풀어봤다.이리저리 생각하다보니 문제의 요구사항을 파악하는 것이 가장 오래 걸렸다.문제문제의 답을 한 줄로 요약해보면 파일이 있는 가장 작은 x, y값과 가장 큰 x, y값을 구하는 것이다.그렇게 숫자 네 개를 가진 정수형 배열을 리턴하면 끝이다.풀이가장 간단한 방법으로 생각한 것은 최솟값과 최댓값을 구하는 것이었다.내가 가진 값보다 더 작은 값이 있다면 내 값을 갱신하고내가 가진 값보다 더 큰 값이 있다면 내 값을 갱신하는 것이다.나는 if문을 통해 일일이 직접 비교해서 풀어보았다. 실행 결과다음에도 재밌는 문제를 풀어보기를 기대해야겠다.
[PCCE 기출문제] 3번 / 수 나누기 자바(Java)
·
프로그래머스
오랜만에 프로그래머스를 들어가보니 PCCE 기출문제가 추가되어 있었다. 그래서 순서대로 풀다 보니 블로그에 적어두어도 재밌을 것 같은 문제를 발견했다. 문제문제는 주어진 수를 2자리씩 끊어서 합치면 되는 문제였는데, 이 문제는 이미 작성된 코드 중 1줄만 수정하면 되는 문제이다. 풀이내가 변경한 것은 for문의 반복 횟수이다. 주어진 코드에서는 i 그런데 난 왜 굳이 5를 썼을까? 문제에서 주어지는 입력값의 제한사항이 2000000000까지이므로우리가 자릿수를 판별하기 위해 반복문 안에서 number /= 100을 통해 확인하는 최대 횟수는 5번이다. 따라서 i불필요한 반복문 실행을 할 필요는 없으니 문제에서 주어진 제한사항에 맞춰 풀었다고 보면 되겠다. 실행 결과
잠실 롯데월드몰 짱구 팝업스토어
·
주저리주저리/팝업스토어
저번에 올렸던 신카이 마코토 팝업스토어와 같은 날 다녀온 짱구 팝업스토어 얘기를 해보려고 한다. 도착 후 대기 등록여의나루역에서 잠실역으로 이동한 후 바로 대기 등록을 하러 갔다.대기 등록을 위한 줄은 그렇게 길지 않았는데 정말 무서운 이야기가 여기서 시작된다. 6시쯤 도착해서 다들 저녁도 먹으러 갈 거라고 생각했는데 정말 태평한 생각이었다. 대기 등록을 했는데 무려 대기가 4자리수..?한 팀 당 1분이라고 쳐도 오늘안에 못 들어간다는 계산이 되었다. 그래서 대충 포기하고 카페도 가고 밥도 먹으러 가자는 얘기가 나왔다. 어쩌다보니 카페 먼저생각보다 1층에 자리가 없어서 2층으로 자리를 잡았는데 뷰가 괜찮았다. 물론 2층도 자리가 많이 없었다. 제일 놀랐던 건 테이블 퀄리티가 미쳤다.. 촉감이 너무 좋았다..
Android Material Theme Elevation 해제하기
·
Dev experience/Android
Material theme을 사용하면서 왜 Elevation 설정을 해제하려고 할까앱에서 원하는 색상을 적용하기 어렵다. Material theme만 적용하게 되면 상관이 없겠지만,iOS나 다른 플랫폼과 색상을 맞추기 위해서는 Material theme만을 사용할 수가 없다. 왜 하필 elevation이냐... 그건 바로 elevation을 통해 shadow를 적용했는데Material theme 설정 때문에 내가 지정한 View의 backgroundTint를 적용할 수 없었다. 예를 들면?MaterialCardView가 있다. Appcompat의 CardView를 상속받아 만들어졌는데cardElevation을 0 초과로 설정하는 순간 내 기본 테마 색상에서더 진한 채도를 가진 색상으로 background..
CoroutineScope와 CoroutineContext 되짚어보기
·
Study/Kotlin
CoroutineScope(이하 Scope)는 CoroutineContext(이하 Context)라는 하나의 프로퍼티를 가지고 있다. 더불어 모든 Coroutine은 특정 Scope에서 실행된다. 그리고 여러 개의 Coroutine은 같은 Scope에서 실행될 수 있다. 특정 Coroutine과 그 자식 Coroutine을같은 Scope에서 실행하게 되면 Job 객체들이 부모-자식 계층을 구성하게 된다. 이렇게 형성된 부모-자식 계층은 구조적 동시성에서 중요한 부분이다. 같은 Scope에서 실행된 Coroutine은기본적으로 해당 Scope의 Context를 상속받는다. 하지만 각 Coroutine은 다른 Context로 실행될 수 있고,이것도 계층 구조를 따라 특정 Coroutine이 A라는 Conte..