분류 전체보기 458

[메이플 캘린더] ViewPager2와 TabLayout으로 하이퍼스탯, 어빌리티 프리셋을 좌우 스와이프로 확인해보자

사용 의도하이퍼 스탯과 어빌리티는 프리셋을 3개 가지고 있는데, 이것을 좌우 스와이프로 확인하도록 하고 버튼을 터치해도 좌우 스와이프 애니메이션이 발생하면서 프리셋을 바꾸도록 구현하고자 하였다.좌우 스와이프는 ViewPager2를 활용하면 되지만, 이것을 버튼과 어떻게 연계할지를 고민하였는데 TabLayout을 버튼 형식의 스타일로 만들고 TabLayoutMediator로 ViewPager2와 연동하는 것으로 구현할 수 있었다. 적용 방법ViewPager2와 TabLayout을 배치한다.  st..

[BOJ/Gold 4] 백준 31804 Chance!(C++)

문제 링크https://www.acmicpc.net/problem/31804 문제자료구조 시험에서 우찬이는 a점을 받았고, 상훈이는 우찬이보다 높은 b점을 받았다. 우찬이는 상훈이보다 점수가 낮아서 화가 났지만, 공부를 하나도 하지 않아서 상훈이보다 시험을 잘 볼 수는 없다는 것을 알고 있었다. 하지만 우찬이는 최소한 동점을 받고 싶었기 때문에, 자신의 수를 바꾸는 마법을 배워서 다음 3가지 마법을 사용할 수 있게 되었다. 물 주기: 수에 물을 주면 수가 1 커진다.밥 주기: 수에 밥을 주면 수가 2배가 된다.chance!: 수에 chance!를 외치면 수가 10배가 된다.하지만 chance!를 외치면 목이 너무 아프기 때문에 우찬이는 chance! 마법을 최대 한 번만 사용할 수 있다. 그리고 마법을 ..

BOJ/Gold 2024.05.18

[메이플 캘린더] Custom View로 장비 세부정보 UI에 스타포스를 달아보자

사용 의도스타포스 UI는 아이템별로 배치해야 할 별의 위치, 개수, 심지어 별의 간격까지 다르며 이것을 정형화된 View로는 나타낼 수 없다고 판단하여 Custom View를 활용하기로 하였다. 학습 내용 Custom View의 구현은 View의 크기를 측정하는 onMeasure(), View를 측정한 후 화면에 배치한 후 호출되는 onLayout(), View를 배치한 후 View에 무언가를 그리는 onDraw()로 순차적으로 이루어진다.onMeasure() : View의 크기를 확인하거나 ViewGroup인 경우 ViewGroup을 구성하는 Child View들을 통하여 width와 height를 결정한다.onMeasure()는 특별히 return하는 값이 없으며, setMeasuredDimensio..

[메이플 캘린더] Hilt와 Clean Architecture

사용 의도의존성 주입을 위해 Hilt를 사용하기로 하였고, 그에 따라 Clean Architecture에서 지향하는 관심사의 분리를 하기로 하였다. 학습 내용Clean Architecture에서는 구성 요소를 Entity, UseCase, Interface, Framework로 계층적으로 분리한다.Entity : 핵심 비즈니스 로직을 캡슐화하며, 가장 변하지 않고 외부의 어떤 요소로부터 영향을 받지 않는다.UseCase : 애플리케이션을 사용하는 사용자들의 행위를 정의하는 요소이다.UseCase는 Entity로 들어오고 나가는 데이터의 흐름을 조정하고, 비즈니스 로직을 바탕으로 UseCase의 목적을 달성하도록 한다.UseCase는 Entity에 영향을 끼쳐서는 안 된다. Interface Adapter..

[메이플 캘린더] ViewPager2와 Custom View로 캐릭터 정보 조회 날짜를 선택하는 달력을 만들어보자

사용 의도넥슨에서 메이플스토리의 캐릭터 정보를 실시간으로 제공하게 되었으며, 그에 따라 캐릭터 정보를 실시간으로 조회할지, 아니면 날짜를 선택해서 조회할지를 결정하는 기능을 구현하게 되었다.조회 날짜 선택 모드일 때 달력 모양의 이미지 버튼이 생기며, 버튼을 누르면 달력 Dialog가 나오고 여기서 날짜를 선택할 수 있게 하였다.그리고 달력을 좌우 스와이프로 달력을 바꿀 수 있도록 하고 싶었기 때문에, 기존에 사용하던 RecyclerView + ListAdapter가 아닌 ViewPager2를 사용하게 되었다. 학습 내용ViewPager2는 Fragment 간 화면 슬라이드를 가능하게 하는 라이브러리이다.ViewPager2는 화면 슬라이드에 자동으로 애니메이션을 적용할 수 있다. 이 애니메이션은 사실 따..

[BOJ/Gold 4] 백준 14615 Defend the CTP!!!(C++)

문제 링크 https://www.acmicpc.net/problem/14615 14615번: Defend the CTP!!! 첫 번째 줄에 N(3≤N≤100,000)과 M(1≤M≤1,000,000)이 주어진다. N은 CTP에 존재하는 도시의 개수를 의미하고 M은 CTP에 존재하는 튜브의 개수를 의미한다. 다음 M개의 줄에 걸쳐 X, Y(1≤X, Y≤N)가 주어지 www.acmicpc.net 문제 지금으로부터 527년이 지난 서기 2544년, 항성 간 이동이 가능해진 인류는 태양계가 아닌 새로운 보금자리를 찾아 기술의 집약체인 CTP(Cho Technology Planet, 초 기술 행성)를 건설한다. 인공지능이 관리하는 CTP 안에서는 자연재해도 전쟁도 없었으며 많은 사람이 행복을 누리며 살아나갔다. C..

BOJ/Gold 2024.03.28

[BOJ/Gold 4] 백준 5547 일루미네이션(C++)

문제 링크 https://www.acmicpc.net/problem/5547 5547번: 일루미네이션 첫째 줄에 두 개의 정수 W와 H가 주어진다. (1 ≤ W, H ≤ 100) 다음 H줄에는 상근이네 집의 건물 배치가 주어진다. i+1줄에는 W개의 정수가 공백으로 구분되어 있다. j번째 (1 ≤ j ≤ w) 정수의 좌표는 www.acmicpc.net 문제 부유한 집안의 상속자 상근이네 집은 그림과 같이 1미터의 정육각형이 붙어있는 상태이다. 크리스마스가 다가오기 때문에, 여자친구에게 잘 보이기 위해 상근이는 건물의 벽면을 조명으로 장식하려고 한다. 외부에 보이지 않는 부분에 조명을 장식하는 것은 낭비라고 생각했기 때문에, 밖에서 보이는 부분만 장식하려고 한다. 위의 그림은 상공에서 본 상근이네 집의 건..

BOJ/Gold 2024.03.27

[BOJ/Gold 5] 백준 31476 :blob_twintail_thinking:(C++)

문제 링크 https://www.acmicpc.net/problem/31476 31476번: :blob_twintail_thinking: 첫째 줄에는 양갈래 굴의 방 중 가장 깊은 곳의 깊이 $D(1 \le D \le 12)$와 파손된 길목의 수 $N(0 \le N \le 2^D-2)$, 각 블롭 세력이 기본적으로 탐색하는 시간인 $U(1 \le U \le 100)$와 양갈래 블롭들이 갈라 www.acmicpc.net 문제 블롭들은 늘 새로움을 추구해 왔다. 이번에도 블롭들은 새로운 느낌을 원하였고, 이에 블롭들은 매일매일 하늘에 기도하게 된다. 이 기도를 들은 토카는 블롭들에게 양갈래 머리를 하사하였으며, 블롭들은 대 양갈래 시대를 맞게 된다. 그러나, 일부 블롭들은 거기서 더 새로운 헤어 스타일을 추..

BOJ/Gold 2024.03.22

[BOJ/Silver 1] 백준 18290 NM과 K (1)(C++)

문제 링크 https://www.acmicpc.net/problem/18290 18290번: NM과 K (1) 크기가 N×M인 격자판의 각 칸에 정수가 하나씩 들어있다. 이 격자판에서 칸 K개를 선택할 것이고, 선택한 칸에 들어있는 수를 모두 더한 값의 최댓값을 구하려고 한다. 단, 선택한 두 칸이 인접 www.acmicpc.net 문제 크기가 N×M인 격자판의 각 칸에 정수가 하나씩 들어있다. 이 격자판에서 칸 K개를 선택할 것이고, 선택한 칸에 들어있는 수를 모두 더한 값의 최댓값을 구하려고 한다. 단, 선택한 두 칸이 인접하면 안된다. r행 c열에 있는 칸을 (r, c)라고 했을 때, (r-1, c), (r+1, c), (r, c-1), (r, c+1)에 있는 칸이 인접한 칸이다. 입력 첫째 줄에 ..

BOJ/Silver 2024.03.08

[BOJ/Silver 2] 백준 29728 실버와 소수는 둘다 S로 시작한다(C++)

문제 링크 https://www.acmicpc.net/problem/29728 29728번: 실버와 소수는 둘다 S로 시작한다 브실이는 실버 난이도의 소수 관련 문제를 풀던 도중, "실버"와 "소수"가 동일하게 S로 시작한다는 것을 깨달았다. 물론 소수는 한글로 적었을 때의 발음만 S로 시작하지, 영어로는 prime이라 틀린 www.acmicpc.net 문제 브실이는 실버 난이도의 소수 관련 문제를 풀던 도중, "실버"와 "소수"가 동일하게 S로 시작한다는 것을 깨달았다. 물론 소수는 한글로 적었을 때의 발음만 S로 시작하지, 영어로는 prime이라 틀린 말이지만 브실이는 새로운 문제를 만들 생각에 들떠 세세한 것은 신경 쓰지 않기로 했다. 브실이가 구상한 문제는 다음과 같다. 먼저 빈 문자열 A를 준비..

BOJ/Silver 2024.02.29

[BOJ/Silver 1] 백준 25918 북극곰은 괄호를 찢어(C++)

문제 링크 https://www.acmicpc.net/problem/25918 25918번: 북극곰은 괄호를 찢어 극지 연구소에서 연구 중인 협이는 새로운 북극곰의 특성을 발견했다. 그것은 바로 북극곰이 $O$와 $X$를 보면 $()$와 $)($로 찢어버린다는 것이다. 협이는 이러한 북극곰의 특성을 이용하여 길이 $N www.acmicpc.net 문제 극지 연구소에서 연구 중인 협이는 새로운 북극곰의 특성을 발견했다. 그것은 바로 북극곰이 O와 X를 보면 ()와 )(로 찢어버린다는 것이다. 협이는 이러한 북극곰의 특성을 이용하여 길이 N의 괄호 문자열 S를 만들고자 한다. 북극곰은 낮에 활동을 하기 때문에 낮에 돌아다니는 것은 위험하다. 때문에 협이는 매일 밤마다 활동할 수 있다. 밤에 협이는 문자열이 ..

BOJ/Silver 2024.02.27

[BOJ/Silver 1] 백준 25215 타이핑(C++)

문제 링크 https://www.acmicpc.net/problem/25215 25215번: 타이핑 민겸이는 영어 소문자와 대문자로 이루어진 문자열을 타이핑하기로 했다. 민겸이가 사용할 수 있는 버튼은 26개의 영어 알파벳 버튼과 마름모(◆) 버튼, 별(★) 버튼이다. 각 버튼은 아래와 같이 www.acmicpc.net 문제 민겸이는 영어 소문자와 대문자로 이루어진 문자열을 타이핑하기로 했다. 민겸이가 사용할 수 있는 버튼은 26개의 영어 알파벳 버튼과 마름모(◆) 버튼, 별(★) 버튼이다. 각 버튼은 아래와 같이 작동한다. 알파벳 버튼을 누르면 소문자 또는 대문자 중 하나가 입력된다. 이때, 마름모 버튼이 활성화되어있다면 대문자, 아니라면 소문자가 입력된다. 마름모 버튼은 처음에 비활성화되어있다. 마름..

BOJ/Silver 2024.02.21

[BOJ/Silver 1] 백준 25947 선물할인(C++)

문제 링크 https://www.acmicpc.net/problem/25947 25947번: 선물할인 입력은 표준입력을 사용한다. 첫 번째 줄에 선물의 개수를 나타내는 양의 정수 $n$ ($1 ≤ n ≤ 100\,000$), 예산을 나타내는 양의 정수 $b$ ($1 ≤ b ≤ 10^9$), 반값 할인을 받을 수 있는 최대 선물의 수를 www.acmicpc.net 문제 n개의 선물 가격이 주어졌을 때, b의 예산으로 최대로 많은 선물을 사려고 한다. 이때 최대 a개의 선물에 대해서는 반값 할인을 받을 수 있다고 했을 때 최대로 살 수 있는 선물의 수를 구하는 프로그램을 작성하시오. 단, 한 선물에는 최대 한 번만 반값 할인을 받을 수 있다. 입력 입력은 표준입력을 사용한다. 첫 번째 줄에 선물의 개수를 나..

BOJ/Silver 2024.02.20

[BOJ/Silver 1] 백준 26091 현대모비스 소프트웨어 아카데미(C++)

문제 링크 https://www.acmicpc.net/problem/26091 26091번: 현대모비스 소프트웨어 아카데미 첫째 줄에 견학을 희망하는 학회원의 수 $N$과 견학하는 팀의 최소 능력치를 나타내는 정수 $M$이 공백으로 구분되어 주어진다. ($1 \le N \le 100\,000$, $1 \le M \le 10^9$) 둘째 줄에 학회원 $N$명의 능력치 www.acmicpc.net 문제 현대모비스는 글로벌 자동차 부품 기업으로 자율주행, 커넥티비티, 전동화 분야에 역량을 집중해 스마트 모빌리티 시대를 선도하고 있는 기업입니다. 현대모비스는 소프트웨어 생태계 조성을 위해 소프트웨어 아카데미를 운영하고 있으며, 내부적으로는 연구원들의 소프트웨어 직무교육 이수를 통해 우수인재를 육성하고, 대외적으..

BOJ/Silver 2024.02.19

[BOJ/Silver 2] 백준 16112 5차 전직(C++)

문제 링크 https://www.acmicpc.net/problem/16112 16112번: 5차 전직 메이플스토리 뉴비 키파가 드디어 레벨 200을 달성하고 5차 전직이라는 시스템을 이용해 캐릭터를 더욱 강력하게 만들려고 합니다. 5차 전직을 하려면 먼저 퀘스트를 통해 아케인스톤이라는 아 www.acmicpc.net 문제 메이플스토리 뉴비 키파가 드디어 레벨 200을 달성하고 5차 전직이라는 시스템을 이용해 캐릭터를 더욱 강력하게 만들려고 합니다. 5차 전직을 하려면 먼저 퀘스트를 통해 아케인스톤이라는 아이템을 받아야 합니다. 아케인스톤을 활성화시키면 캐릭터가 얻는 경험치를 아케인스톤에 모을 수 있습니다. 5차 전직을 하기 위해서는 총 n개의 퀘스트를 진행해서 n개의 아케인스톤을 받아야 하며, 각각의 ..

BOJ/Silver 2024.02.17