본문 바로가기

전체 글

(187)
Single, Maybe, Completable 보호되어 있는 글입니다.
큰수 만들기 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 1. 첫번째 풀이(10번째 테스트 케이스에서 시간 초과) 공책으로 문제를 풀어보니 현재 문자와 다음 문자를 계속 잘라 내주면 원하는 답을 얻을 수 있었다. static String solution1(String number, int k) { StringBuilder builder = new StringBuilder(number); while (k > 0) { for (int i = 0; i < builder.length()-k; i++) { if (builder.charAt(i) < builder.charAt(i+1)) { builder...
삼성폰 HLS 재생 안됨 디버깅 몇몇 HLS 스트리밍 주소가 삼성 기기에서 재생이 안되는 이슈가 생겼다. 왜 안되는지 확실히 모르니 일단 ts 파일을 받아보자. ts 파일을 다운받기 위해선 먼저 m3u 파일을 다운받아야 한다. 크롬에 hls 프로토콜을 사용하는 주소를 입력하면 m3u 파일이 다운로드 된다. m3u 파일을 메모장으로 열어보면 다음과 같은 내용들이 나온다. #EXTM3U #EXT-X-VERSION:3 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=119402 chunklist_w396990040.m3u8?tid=1fbe88e08b769b82b81cade5f1d9983f 내가 받은 m3u 파일은 한번 더 m3u 파일을 다운로드 해줘야 했다. chunklist_w396990040.m3u8?tid=1f..
짝지어 제거하기 https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 처음엔 String을 ArrayList로 변환 후 끝에서 부터 문자열을 삭제하는 방법을 사용했다. 요소를 삭제한 후에는 인덱스를 다시 설정해주어야 하기 때문에 i+2를 해주었다. private static int solution1(String s) //효율성 통과X { ArrayList arr = new ArrayList(); for (int i =..
안드로이드 패턴.. 어떤걸 쓰지?? 서론 2년 동안 앱을 개발하면서 유지보수 해야 하는 어플도 많아지고 있다. 관리해야 하는 앱이 많다보니 전에 작성한 코드들이 생각이 안 날 때가 많다. 물론 코드를 짤 때 유지보수가 용이하도록 모듈화 하려고 노력하지만 실력이 부족해서인지 이것도 한계를 느끼고 있다. 조금 더 쉽게 코드들을 관리하기 위해선 패턴을 사용해야 겠다는 생각이 들었고 앞으로 만드는 프로젝트들은 패턴을 적용시켜서 개발하려고 한다. 그래서 어떤 패턴을 쓸건데? 보통 안드로이드에서 사용하는 패턴은 3가지이다. 1. MVC MVC 패턴은 개발자라면 한 번쯤은 들어봤을만큼 유명한 패턴이다. 웹 / 앱 가리지 않고 많이 사용하는(했던?) 패턴이다. 구성을 설명하자면 - Model : 일반적으로 데이터베이스나 서버에서 데이터를 받아서 가공하는..
코루틴 코루틴은 왜 만들어졌을까? 코루틴을 알아보기에 앞서 코루틴이 왜 만들어졌는지 찾아보았다. 다음 영상은 꼭 보는 것을 추천한다. https://www.youtube.com/watch?v=BOHK_w09pVA 구글 I/O 위 영상을 보면 코루틴은 Dream Code를 위해 만들어진 라이브러리라고 한다. 여기서 Dream Code는 다음과 같다. val user = fetchUserData() textView.text = user.name fetchUserData 함수는 HttpConnection이나 Retrofit으로 서버 api를 조회해 유저 데이터를 받아오는 것을 뜻한다. 안드로이드에서는 메인쓰레드로 서버 api를 조회할 수 없기 때문에 이 코드가 정상적으로 동작하지 않는다. 또한 메인쓰레드에서 Http..
프린터 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 참고로 다른 사람들의 풀이는 대부분 while 문의 조건을 isEmpty로 설정해놨음 import java.util.LinkedList; public class 프린터 { public static void main(String [] args) { int [] prio = new int[] {1, 1, 9, 1, 1, 1}; int location = 0; Syste..
기능 개발 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 레벨 2인데 난이도가 낮은편 배포 날짜를 구할 때 몫이 홀수라면 +1 해주는게 포인트 package question; import java.util.ArrayList; public class 기능개발 { public static void main(String [] args) { int [] progresss1 = {93, 30, 55}; int [] sp..