- Today
- Yesterday
- Total
목록분류 전체보기 (375)
메이쁘
https://www.acmicpc.net/problem/2872 2872번: 우리집엔 도서관이 있어 문제 상근이는 컴퓨터 공학의 일인자가 되기 위해 책을 매우 많이 구매했다. 하지만, 집에 책장이 없어서 책을 탑처럼 쌓아놓고 있다. 오늘은 오랜만에 상근이가 집에서 휴식을 취하는 날이다. � www.acmicpc.net 이진 탐색 분류로 되어있는데 그리디로 해결한 문제. 생각보다 쉽지만 처음 규칙을 찾는데 조금 걸렸다. 핵심은 - 시작 인덱스를 1로 가정하고, 입력받은 책의 맨 앞에서부터 끝까지 하나씩 시작 인덱스와 비교한다. - 비교했을 때, -> 시작 인덱스 + 1 보다 더 크다면 -> 해당 값 과 시작 인덱스 차이만큼 별도 값에 더한 후, 시작 인덱스를 해당 값 으로 변경한다. -> 시작 인덱스 +..
오글오글이란, 오글거리는 오늘의 글귀 이다. 오늘 하루를 나타내는 한 글귀, 인상깊은 대사 또는 명언, 앞으로에 있어 기억해두면 좋은 문장 중 하나와 내 코멘트를 적는 공간이다. Q. "보통 스타트업은 자신이 아는 사람들(인맥)에서 시작되는데 주위에 뛰어난 사람이 없을 경우, 모으는 방법이 있을까요?" A. "꾸준히 차근차근 실력을 쌓아가면서 사람들에게 평가를 받고 인정을 받으면서 당신의 실력이 뛰어나다고 인정받는다면 뛰어난 사람들이 모이고, 스타트업을 시작할 수 있을 것입니다." - 어느 한 블로그(하단 참조) 의 댓글 중 - 자기 자신 주변에 뛰어난 사람, 능력있는 사람(인맥)이 없다고 하는 사람들이 있다. 필자도 심지어 이런 말을 주변 사람들에게 한 적도 있었다. 이제부터 필자 자신도 반성하면서 이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cYjnsr/btqEOOOf63l/PNUI7kwxT5ACZWWZRpBXa1/img.png)
안녕하세요. Kotlin에서 주로 사용하는 문법들 중 늦은 문법들에 대해 다뤄보겠습니다. 우선 Q. lateinit, lazy 를 사용하는 이유는 ? A. 보통 class에서 변수를 초기화하면, 클래스 생성 시 해당 변수도 함께 생성되며 초기화된다. 그렇게 되면 클래스 객체를 생성할 때 마다 해당 변수도 함께 초기화되기 때문에 바로 사용할 수 있다는 장점이 있다. 하지만 해당 변수를 바로 사용하지 않거나 꼭 사용하는 경우가 아니라면?? 오히려 클래스 생성마다 해당 변수를 만들고 초기화 하는 것이 시간적, 메모리적 낭비라는 거죠. 또한, 전역 변수를 선언하기 위해 굳이 = null 을 번거롭게 해야 할 경우도 종종 있습니다. 그래서 Kotlin 에서는 lateinit 과 lazy 문법을 만들었습니다. la..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xDe3n/btqEO0ARSld/w9rGCevC0JaX7zFpZ6xMa1/img.png)
안녕하세요. 안드로이드 개발을 진행하다 보면 new Handler() 를 쓰시는 날이 있습니다. 이 핸들러에 대해서, 그리고 핸들러와 한 셋트로 거론되는 looper에 대해서 간략히 설명하는 시간을 갖겠습니다. Handler 와 Looper 를 사용하는 이유? 핸들러와 루퍼를 알기 전에 하나 짚고 넘어가야 할 부분이 있습니다. 핸들러와 루퍼는 쓰레드에 사용됩니다. 그렇다면 왜 쓰레드에 사용되냐? 라는 질문부터 들어가야 할 것 같습니다. 안드로이드는 기본적으로 UI를 처리하는 메인 쓰레드를 가진 싱글 쓰레드 시스템으로 동작합니다. 싱글 쓰레드 시스템은 두 가지 원칙이 있습니다. - 메인 쓰레드(UI Thread) 를 Block (중지) 하지 않는다. - 안드로이드 UI ToolKit (TextView, I..
안녕하세요. Coroutine 은 코루틴이라고 불리며 코틀린의 주요 기능 중 하나입니다. 코루틴은 2018년 10월 29일 Kotlin 1.3에서 정식 릴리즈되면서 추가된 기능 중 하나라고 합니다. 그럼 시작하겠습니다. 코루틴(Coroutine) 이란? - 서브루틴보단 크지만 쓰레드는 아닌, 그렇지만 쓰레드와 비슷한 기능을 함 - light-weight Threads 로, 가벼운 쓰레드 와 같아서 비동기적(async) 프로그래밍이 가능함 *** 현실 동기(동시) 와 컴퓨터상의 동기 와는 반대개념. *** 즉, 동기는 비동시라 이전 코드나 함수 완료 전까지 대기. 비동기는 동시라 코드나 함수 호출만 하고 바로 다음 동작 진행. - 함수 형태로 코드를 작성하여 가독성이 높음 - 대용량 처리, 복잡한 계산과 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Sa2nR/btqEITvjXH7/NSGaToXyd2FFxeXps8m7G0/img.png)
안녕하세요. 최근에 iOS 업무를 맡게 되어 퇴근 후 틈틈히 공부하며 기록하려고 합니다. 그럼 포스팅 진행하겠습니다! GCD 란 ? - iOS에서 쓰레드 관련(특히 멀티쓰레딩) 작업을 처리하기 위해 사용함 - Grand Central Dispatch 의 약자로, 포그라운드(main = UI)와 백그라운드 작업을 알맞게 처리하기 위한 API - 시간이 오래 걸리는 작업을 방해하지 않고 UI 작업을 원활히 처리할 때 주로 사용함 - 즉, 특정 작업을 어떤 쓰레드가 맡을 것인지, 멀티 쓰레드 방식을 사용할 것인지, Sync 또는 Async(동기와 비동기) 방식 중 어떤 것을 선택할지 정해서 사용하는 API - GCD 를 사용하기 위해 DispatchQueue 라는 큐 방식으로 수행함 GCD의 장점은 ? red..
https://www.acmicpc.net/problem/2878 2878번: 캔디캔디 문제 오늘 사탕 M개를 가득 담은 박스가 택배로 택희네 집에 도착했다. 택희는 이 사탕을 N명의 친구들에게 나누어 주려고 한다. 택희의 친구들은 문자로 사탕을 몇 개 받고 싶은지 보냈다. 만약 www.acmicpc.net 착한 제목에 그렇지 못한 문제.. 이진탐색 보다는 탐욕에 가까운 문제로 골머리 한시간 썩히다가 해설을 참고하니 그리디로 더 쉽게 풀 수 있었다. 핵심 - 못 주는 사탕의 개수는 고정되어 있다. M개의 사탕을 줄 수 있고, 각 사람들이 원하는 사탕의 개수 총합을 SUM 이라고 할 때 못 주는 사탕의 개수 = SUM - M - 위에서 못주는 사탕의 개수로 공략한다. 이 때, 분노게이지를 낮추기 위해선 한..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mM8Jy/btqEFV7JBOA/GXIQt11kBdn8sjVKzj5u4k/img.png)
https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B�� www.acmicpc.net 이분 탐색 문제인데 정답률에 비해 난이도는 높았었던 문제. 진짜 생각이 안나서 해설을 참고했었다. 핵심은 이거다. - 정렬된 배열 : K번째에 해당할 것 같은 수 (행렬 내 범위. 1 ~ K) *** 최댓값을 n * n 이 아닌 K로 잡는 이유는 K번 째에 해당하는 수는 절대 K를 초과하지 않기 때문에 탐색 시 시간 절약을 위해서다. *** K를 초과하지 않는 이..
https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 문제 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 �� www.acmicpc.net 이진 탐색 문제이다. 한글 번역이 헷갈리게 되어있어 문제 풀이 또한 헷갈렸었다..ㅠㅠ 하지만 타 문제에 비해 어렵진 않았던 문제. 핵심 - 돈이 남아도 횟수(M) 를 채우기 위해 넣고 빼기 가능. -> 이 말은 즉슨, M번 이하만 채워도 M번과 동일하게 임의로 넣고빼면서 맞출 수 있다. -> M번 이하인 인출 비용 중 최솟값 구하기. - 정렬된 배열 : 인출 금액 (1원 ~ 최대 사용 금액 * M ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dvxgBg/btqEGBUAwFU/IyOrEJ1AX4zpyJdREMiOMK/img.png)
안녕하세요! 위와 같이 pandas.read_csv() 했을 때 UnicodeDecodeError 가 발생하곤 합니다. 이에 대한 해결 방법 바로 적겠습니다. UnicodeDecodeError ? -> read 함수의 기본 인코딩 방식이 유니코드(UTF-8) 라서 특정 파일의 한글이 깨지는 오류. -> 위에 pd.read 할 때 2번 째 패러미터로 encoding 지정하면 됨. -> 기본 타입 : UTF-8 , 한글 : encoding=“euc-kr” 또는 encoding=“cp949” (권장) *** euc-kr 은 한글완성형코드(2350자) *** cp949 는 한글조합형코드(11172자) *** 그렇기 때문에, euc-kr은 한글조합형코드가 아니라서 ‘믜’ , '뷁' 등 빈도 수가 낮은 문자들은 반..