[Android] View Binding 사용하기
오늘은 Android Jetpack 중 View Binding을 사용하는 방법에 대해 알아보자. View Binding의 필요성 기존에 Android에서 XMl에서 작성한 View의 요소를 불러오기 위해서는 findViewById를 사용했다. View의 요소가 많아지면 그만큼 findViewById 메서드를 호출해야 하므로 굉장히 번거로웠다. 이후에 Kotlin-android-extensions를 사용하면 findViewById를 생략하고 간편하게 뷰에 접근할 수 있게 되었지만 문제는 서로 다른 레이아웃 XML 파일에서 id를 동일하게 사용할 수 있기 때문에 코드가 헷갈릴 가능성이 있었다. 이러한 문제들 때문에 Android에서는 Kotlin-android-extensions의 지원을 중단하고 View ..
로지텍 K380 키보드 fn 펑션키 고정 해제하기 (F1 - F12 표준 기능 키로 사용)
로지텍 K380을 구매하여 노트북과 함께 사용하고 있는 중에 F1 ~ F12, ins 키가 모두 표준 기능키가 아니라 fn 펑션키가 고정되어 멀티미디어 키로 동작되고 있었습니다. 저는 멀티미디어 키보다 표준 기능키를 더 많이 사용하므로 조금 불편해서 fn 펑션키 고정을 해제하려고 했지만 키보드 자체에서는 불가능하고 로지텍에서 제공하는 소프트웨어 `Logitech Options`을 설치해서 fn 펑션키를 고정을 해제하는 방법으로 해결했습니다. 이때 유의할 점은 소프트웨어에서 설정한다고 해도 해당 컴퓨터에만 적용된다는 것입니다. 그럼 fn 펑션키 고정 해제하는 방법에 대해 알려드리겠습니다~! Logitech Options 설치 https://www.logitech.com/ko-kr/software/optio..
[백준] 14888. 연산자 끼워넣기 (Java, 자바)
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다...
[백준] 21608. 상어 초등학교 (Java, 자바)
https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 문제 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호가 매겨져 있고, (r, c)는 r행 c열을 의미한다. 교실의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은 (N, N)이다. 선생님은 학생의 순서를 정했고, 각 학생이 좋..
[백준] 21609. 상어 중학교 (Java, 자바)
https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net 문제 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록이 있다. 일반 블록은 M가지 색상이 있고, 색은 M이하의 자연수로 표현한다. 검은색 블록은 -1, 무지개 블록은 0으로 표현한다. (i, j)는 격자의 i번 행, j번 열을 의미하고, |r1 - r..
[프로그래머스] 베스트앨범 (Java, 자바)
https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀풀이 HashMap과 List 정렬을 알아야 하는 문제! 문제의 조건에서 1. 속한 노래가 많이 재생된 장르를 먼저 수록 2. 장르 내에서 많이 재생된 노래를 먼저 수록 3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록 위 세 조건을 만족시키기 위해서 장르 클래스, 노래 클래스를 만들었고 이들이 정렬될 수 있도록 Comparable을 상속받아 구현했다. 정렬을..
[백준] 14226. 이모티콘 (Java, 자바)
https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 문제 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 클립보드에 있는 모든 이모티콘을 화면에 붙여 넣기 한다. 화면에 있는 이모티콘 중 하나를 삭제한다. 모든 연산은 1초가 걸린다...
[알고리즘] 순열, 중복순열, 조합, 중복조합 총 정리 (Java, 자바)
이번 포스팅에서는 코딩 테스트를 풀다 보면 정말 자주 나오는 순열, 중복순열, 조합, 중복조합에 대해 정리해보려고 한다. 순열, 중복순열, 조합, 중복조합은 완전 탐색 문제에서 자주 나오고, 구현하는 방법만 알면 문제를 정말 쉽게 풀 수 있으므로 꼭 알아야 하는 알고리즘이다. 구현은 재귀를 이용한 백트래킹을 사용할 것이다. 개인적으로 이 방법이 가장 깔끔하다고 생각한다. 주의해야 할 점은 시간 복잡도가 굉장히 크므로 n이 10 근처일 때 사용해야 한다. (n이 굉장히 크면 시간 초과 발생) 구현에 앞서서 초기 조건은 다음과 같다. public class Main { static int[] arr = {1, 2, 3, 4}; // n에 해당하는 배열 static int[] output; // r개를 뽑은 ..
[백준] 17142. 연구소 3 (Java, 자바)
https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 문제 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈칸으로 동시에 복제되며, 1초가 걸린다. 승원이는 연구소의 바이러스 M개를 활성 상태로 변경하려고 한다. 연구소는 크기가 N×N인 정사각형으로 나타낼 수 있으며, 정사각형..
[Android] SharedPreferences 쉽게 사용하기
오늘은 Android에서 SharedPreferences를 비교적 쉽게 사용하는 방법을 공유하려고 한다. SharedPreferences란? 데이터를 영속적으로 저장해야 할 때 비교적 데이터 양이 작은 경우 간단한 방식으로 Key-Value 형태로 데이터를 저장할 수 있는 안드로이드 API이다. 실제 데이터들은 앱 내의 data/data/(package_name)/shared_prefs/SharedPreference 위치에 파일로 저장된다. SharedPreferences 사용하기 SharedPreferences를 사용하여 데이터를 읽고 쓰는 방법은 다음과 같다. SharedPreferences 객체 생성 SharedPreferences 객체를 생성하기 위해서는 getSharedPreferences() ..
[Android] Jetpack Compose란?
Jetpack Compose란? Jetpack Compose란 네이티브 Android UI를 빌드하기 위한 최신 UI Toolkit이다. 기존 XML로 작성하던 UI보다 더 적은 수의 코드, 여러 가지 강력한 도구, 직관적인 Kotlin API로 Android에서의 UI 개발을 간소화하고 가속화하여 앱에 생동감을 더해주며 Android UI를 더 빠르고 쉽게 빌드할 수 있다. 선언형(Declarative) UI Jetapck Compose는 선언형 UI 패러다임을 적용한 UI Toollkit이다. 기존 안드로이드에서의 UI는 명령형 UI로, UI를 작성하기 위해서는 XML로 레이아웃을 작성하고, Kotlin 코드로 XML 레이아웃을 inflate 한 뒤 findViewById와 같은 함수를 사용하여 위젯..
[SSAFY] 싸피 7기 모바일 트랙 중간 후기
싸피 8기를 모집을 시작한다는 소식을 듣고, 혹시 지원을 고민하는 사람들에게 조금이라도 도움이 됐으면 좋겠다는 마음에 모바일 트랙 후기를 남기려고 한다. 알고리즘 가장 만족스러웠던 교육과정 중 하나이다. 나는 싸피에 입과 하기 전 BFS와 DFS도 모르던 알고리즘 초보였다. 그래서 알고리즘 과정을 소화하지 못할까 봐 걱정했는데 체계적인 커리큘럼 덕분에 잘 소화해 낼 수 있었다. 약 한 달 동안 알고리즘 기초부터 심화까지 학습하게 되는데, 교수님께서 이론을 정말 깊이 있게 설명해주시고 알고리즘 문제도 어떻게 돌아가는지 그림까지 그려가며 설명해주신 덕분에 충분히 이해할 수 있었다. 교육과정에 충실하게 임한다면 웬만한 기업 코딩 테스트는 합격할 수 있는 수준까지 성장할 수 있다고 생각한다. 나는 아직 기업 코..