문제 회전 초밥 음식점에는 회전하는 벨트 위에 여러 가지 종류의 초밥이 접시에 담겨 놓여 있고, 손님은 이 중에서 자기가 좋아하는 초밥을 골라서 먹는다. 초밥의 종류를 번호로 표현할 때, 다음 그림은 회전 초밥 음식점의 벨트 상태의 예를 보여주고 있다. 벨트 위에는 같은 종류의 초밥이 둘 이상 있을 수 있다. 새로 문을 연 회전 초밥 음식점이 불경기로 영업이 어려워서, 다음과 같이 두 가지 행사를 통해서 매상을 올리고자 한다. 원래 회전 초밥은 손님이 마음대로 초밥을 고르고, 먹은 초밥만큼 식대를 계산하지만, 벨트의 임의의 한 위치부터 k개의 접시를 연속해서 먹을 경우 할인된 정액 가격으로 제공한다. 각 고객에게 초밥의 종류 하나가 쓰인 쿠폰을 발행하고, 1번 행사에 참가할 경우 이 쿠폰에 적혀진 종류의..
문제 2019 카카오 인턴십 - 튜플 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 풀이 주어진 튜플에 많이 등장하는 순서대로 숫자 배열을 만들어 리턴해야한다 튜플에 중복이 허용되지 않기 때문에 map에 key값으로 튜플의 원소 값을 넣고 value로 빈도수를 계산해 정렬해서 사용했다 sortByValue()는 map의 value를 기준으로 내림차순으로 정렬하여 반환하는 함수이다 Map.Entry : key와 value로 하나의 쌍을 이루는 map entr..
문제 카카오 2018 공채 - n진수 게임 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0� programmers.co.kr 10진수를 2-16 사이의 모든 진법으로 변환하는 문제이다! 풀이 A라는 숫자를 n진법 수로 변환하려면❓ 1. 몫이 0이 될때까지 A를 n으로 나눈다 2. 나머지를 밑에서부터 읽는다 위의 방법을 함수로 만들면 되는데, 주의할 점은 10이 넘는 수는 대문자 알파벳으로 변환해야 한다 -> 아스키코드 사용하기 튜브의 순서인 수만 뽑아서 리턴하면 완성! public static String solution(i..
문제 프로그래머스 2019 카카오 공채 - 후보키 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 뭔가 간단해보이고 자료구조를 이용해 어떻게 해낼 수 있을 것 같았는데, '비트마스크'라는 새로운 풀이법을 적용해야 했다. 풀이 for문을 돌려 인덱스의 부분집합을 구해 해당 부분집합의 인덱스 조합이 후보키가 될 수 있는지를 검사한다. 1을 colSize만큼 왼쪽으로 쉬프트하게 되면 2^col..
여러 Fragment와 Activity를 연결하며 내가 만든 custom class 타입 객체를 통째로 넘길 일이 생겼다! 똑같이 Intent에 담아 넘기려고 했지만 빨간줄이 생겼고, 몇가지 추가 작업이 필요한 것을 알게 되었다🤔 Serializable (vs Parcelable) Serializable은 객체 직렬화를 위한 표준 Java의 인터페이스이다 인터페이스임에도 불구하고 구현해줘야할 메소드가 없기 때문에 아주아주 간단하게 사용이 가능하다 하지만 처리과정에서 다수의 추가 객체를 생성하므로 생성 저하를 발생시킬 수 있다고 한다 Parcelable은 직렬화를 위한 Android SDK인데, 필수적으로 구현해줘야 하는 메소드가 있으므로 보일러 플레이트가 발생하게 된다 성능은 Parcelable가 더 좋..
Ioc (Inversion of Control) 객체에 대한 제어권이 개발자가 아닌 컨테이너로 넘어가면서 객체의 생성부터 생명주기까지 모두 컨테이너가 관리하는 것 IoC Container인 ApplicationContext에서 XML 파일 또는 annotation을 이용하여 객체 관리 - IoC Container IoC 기능을 제공하는 bean 객체를 관리하는 컨테이너 객체에 대한 생성 및 의존성을 관리 BeanFactory 또는 ApplicationContext를 가리킴 - Bean 스프링 IoC Container가 생성하고 관계설정과 사용제어 등의 관리를 해주는 객체들 annotation을 사용하여 객체를 bean으로 등록 가능 의존성 주입은 bean끼리만 가능 - BeanFactory 스프링의 Io..
프로세스와 스레드 어플리케이션 구성 요소가 시작되면 안드로이드 시스템은 하나의 실행 스레드로 어플리케이션 서비스를 시작한다 기본적으로 같은 어플리케이션의 모든 구성 요소는 하나의 프로세스와 스레드에서 실행된다 (메인 스레드) 구성 요소가 시작되었는데 이미 해당 어플리케이션의 프로세스가 존재할 경우 해당 프로세스 안에서 같은 스레드를 사용한다 필요할 경우, 어플리케이션의 구성 요소가 다른 프로세스로 실행될 수 있고 프로세스에 스레드를 추가로 만들 수 있다 ✔️ 프로세스 운영체제에 의해 메모리에 적재되어 실행중인 프로그램 ✔️ 스레드 프로세스 내에서 실제로 작업을 수행하는 독립적인 주체 ✔️ 멀티 스레드 하나의 프로세스 내에서 두 개의 스레드가 동작하는 것 메인스레드 (UI 스레드) 어플리케이션 실행 시 시..
Activity의 LifeCycle 안드로이드 앱은 여러개의 액티비티가 연결되어있는 구조라고 볼 수 있고, 각 액티비티는 생명주기에 따라 관리된다 액티비티의 클래스는 다음과 같이 6개의 콜백 함수를 제공한다 ✔️ onCreate() 어플리케이션 최초 실행 시 가장 처음으로 한 번 실행되는 함수 해당 Activity의 생명주기 중 딱 한번만 실행되며 viewModel연결과 인스턴스 생성 등 초기화 작업을 이 안에서 실행하면 된다 onCreate() 메소드를 실행 완료하면 Activity는 시작됨 상태에 진입한다 onCreate 함수에 항상 매개변수로 있는 savedInstanceState는 이전 Activity의 상태를 가지고 있는 Bundle객체이다 ex) 세로에서 가로로 화면회전시, onDestroy(..