제목: 의도치 않게 아고 갑자기 감기 기운이 있어서 아침에 의도치 않게 휴가를 써버렸다.. 너무 아까웠지만, 그래도 쓴 휴가인데 오늘 하루 알차게 보내려 했지만, 잠으로 거의 반나절을 보내버렸다.. 역시 쉬는 날이 그렇지... 역시나 휴대폰을 하게 되면 나도 모르게 시간이 많이 가 있다. 오후 8시가 넘어서 도서관에 들려 책을 한 권 빌리고, 집에 돌아와 코딩 테스트를 풀어보니 벌써 11시가 지났다. 이 일기를 쓰고 나서 빌려온 책을 읽으려고 한다. 코딩 테스트를 풀었는데, 오늘은 조금 어려운 문제인지라.. 현타가 힘들게 왔다. 답답한 마음에 해설을 읽었지만, 어.. 오히려 더 어려움을 느끼게 되었다. 강의라도 들어볼까.. 강의를 듣기 전에 어렵더라도 하나씩 이해해가면서 문제를 습득해봐야겠다. 오늘도 게..
A 액티비티에서 B 액티비티로 이동하는 중, 다음과 같이 상태 표시줄이 사라지는 상황이 생겨 버렸다. 처음 들어간 화면인 A 액티비티에서는 잘 나오지만, B 액티비티로 이동하면 사라진다. A 액티비티 B 액티비티 알아보니 안드로이드에는 light모드와 dark 모드가 있는데, 그 둘을 구분하기 위한 statusbar 속성을 달아주어야 하는 것이다. theme.xml 이 두개가 있을 텐데, light 모드는 true 이것을 추가해주고 dark 모드는 false로 해준다. false 이렇게 각각 설정해주고 다시 앱을 실행해 보자. 정상적으로 잘 나오는 것을 확인할 수 있다.
제목 : 다시 마음가짐 잡기 너무 오랜만이다. 사실 글을 쓸 때마다 자주 사용하는 단어이다. 갑자기 오랜만에 일기를 쓰는 이유는 간단하다. 내가 너무 나태해지며, 생활에 만족을 하면서 이 정도면 족하지, 오늘은 할 만큼 다했어, 유튜브 봐야지.. 디즈니 플러스 봐야지 넷플릭스 봐야지.. 집 가서 피파 해야지.. 등등 나를 위한 여가라고 생각이 들었다. 그러다가 문득 유튜브에서 한 영상을 봤는데, 동영상을 볼 때 우리 뇌가 활성화를 하지 않는다는 내용을 본 것이다. 우리 뇌가 활성화가 잘 될 때는 바로 '책 읽기'였다. 책을 읽을 때 뇌가 빨개지면서 매우 붉어지는 것을 확인할 수 있었다. 왜 사람들이 책을 읽으라는지 이해가 되었다. 뭔가 나 자신이 변했으면 하는 마음이 강했다. 바로 유튜브 프리미엄을 해지..
역시나 전 문제도 문제풀이를 볼 수밖에 없었던 너무나도 어려운 문제였다ㅠㅠ 그래도 이번 문제는 직접 풀어 기분 좋아 글을 써본다. 물론 효율적인 방법은 아닌 것 같다. 다른 분이 써놓은 코드랑 비교하니 내가 너무 비효율적이었던 것이다. 우선은 기록이니 글을 쓰고, 답과 한번 더 비교해보며 공부해봐야겠다. 1978 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; import java.io.BufferedReader; import java.io.IOException; import java..
https://st-lab.tistory.com/78 [백준] 2775번 : 부녀회장이 될테야 - JAVA [자바] https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1
목요일부터 시작해 오늘까지 풀 공부를 달리는 중이다.. 뿌듯한 마음도 들지만, 아직까지도 내가 부족하다 느낀다. 오늘은 어제 마지막까지 풀었지만, 수학 능력이 부족하다고 판단하여.. 계차수열을 좀 더 공부하고, 풀어본 1193 분수 찾기 문제이다. 오랜 시간이 걸려서 마침내 결과를 정답으로 바꾸었다. 아쉬운 점은 메모리를 많이 먹었다는 점.. 아무래도 코드를 간결하게 짜지 못했을뿐더러.. 대책없는 천만 단위까지 for문 돌리기, List에 사용으로 인한 것 같다. 그래도 서툰 정답과 구글을 통해 다른 사람의 정답과 비교해보았다.. 무려 100ms 시간 차이가 났다.. 보고 배울게 많은 것 같다. 우선 나의 코드이다. 1193 import java.io.BufferedReader; import java.i..
허.. 점점 어려워지고 있다. 난이도가 급 상승한 느낌이다... 한 문제를 몇 시간 동안 쳐다보고 있는지 모를 정도였다. 내 부족한 수학 실력에 대해서 깨우칠 수 있었던 시간이었던 것 같다. 이거.. 수학도 같이 공부해두면 좋을 것 같다. 1316 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class Test1316 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStream..
오늘은 여자 친구와 하루 종일 공부를 했다. 평소에 하루에 하나씩 풀자던 코딩 테스트를 자주 풀지 못해 오늘 이렇게 하루종일 풀게 되었다. 하나하나 자세히 설명하기엔 시작은 부족하지만, 조금 설명을 해보겠다. 10809 public class Test10809 { //알파벳은 총 26개 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] arr = new int[26]; //모든 값 -1로 초기화 Arrays.fill(arr, -1); String s = br.readLine(); for(int i = 0; ..
정신없이 흘러간 일중리이다.. 셀프 넘버를 풀다 어려워 답을 보고, 한수를 풀다가 어려워 답을 보고... 갑자기 난이도가 급 어려워진 느낌을 받았다. 자연스레 어려운 느낌을 받아 며칠간 코딩 테스틀 풀기가 꺼려지면서 도전하지 못하고 있다가, 너무 쉰 것 같아서 이어서 풀었다. 역시나.. 늦은 시간이라 답만 접어두려 한다. 4673 public class Test4673 { public static void main(String[] args) { boolean[] check = new boolean[10001]; for (int i = 1; i < 10001; i++) { int self = getSelf(i); //true는 셀프넘버가 아닌 숫자이다. if (self < 10001) check[self]..
오늘도 미라클 모닝을 실현했다. 그리고 지금 이 글을 쓰고, 안드로이드 강의를 들으려고 한다. 그런데, 오늘 아침 코딩 테스트를 풀어보니 느낀 점은, 어려운 문제가 나오면 출근 전이다 보니 시간에 쫓기듯 문제를 푼다는 점이다. 가뜩이나 시간도 별로 없는 상황에서 말이다. 그래서 한번 아침에 강의를 듣고, 저녁에 코딩 테스트를 풀어보려고 한다. 시간적 여유를 가지고 풀고 싶기 때문이다. 오늘 문제도 1문제밖에 풀지 못했지만, 꾸준히 풀어나가자. 이번엔 처음으로 함수를 만드는 문제였다. 15596 public class Test15596 { long sum(int[] a) { long result = 0; for(int i = 0; i < a.length; i++) { result += a[i]; } ret..
오늘부터 코딩 미라클 모닝을 시도 중이다. 아침에 한 시간 일찍 일어나서 코딩 테스트를 푸는데 시간을 할애하는 것이다. 처음이라 조금 피곤하긴 했지만 나쁘지 않은 것 같다. 회사가 끝나고 돌아와서는 안드로이드 공부와 사이드 프로젝트를 할 수 있는 여유를 만들어 둘 생각이다. 오늘은 고로 한문제밖에 풀지 못하였다. 4344 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Locale; import java.util.StringTokenizer; public class Test4344 { public static vo..
새벽에 삘이 꽂혀 풀은 3문 제이다. 내일부터는 아침 6시 30분에 일어나서 코딩 테스트를 풀려고 한다. 저녁에는 사이드 프로젝트나, 안드로이드 강의를 들을 시간을 남겨두어야 할 것 같다. 3052 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Set; public class Test3052 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(S..
오늘은 어머님 생신 기념으로 복어를 먹으러 간다. 난생처음으로 먹는 복어라서 설레는 마음이 가득하다. 복어 먹으러 가기 전에 여자 친구와 스터디 카페에 와서 공부 중이다. 오늘 문제는 조금 고전했다. int [] 배열과 Integer [] 배열에 적용되는 메서드가 달라서 애를 먹었기 때문이다. 문제 풀이를 보자. 2562 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.stream.IntStream; public class Main { public static void main(String[] args) throw..
어제 반복문 과제의 마지막 문제인 "더하기 사이클"을 풀다가, 아무리 풀어도 시간 초과가 되어 푸는데 어려움 겪었다. 풀이는 다음과 같다. 1110 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.BufferedWriter; public class Main { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); Bu..
오늘 정말 수난시대였다. 물론 내가 릴리즈를 제대로 실행시켜 보지 못하고, (그 전날에 테스트해서 괜찮을 줄 알음) 그대로 올린 것이다.. 결과는.. 로그인이 되지 않는 대형사고를 쳐버린 것이다. 서둘러 아침부터 원인을 찾아 나섰다. 우선 어젯밤 내가 aab 파일이 180mb가 넘어서 구글 플레이 콘솔 정책상 150mb가 넘으면 안 된다는 규칙 때문에, 올리지 못하게 된 것이다. 그래서 다음과 같이 릴리즈 버전에 설정을 달리 하였다. 바로 이 shrinkResources와 minifyEnabled 속성을 true로 바꾸어 주는 것이다. shrinkResources는 드로어블 파일을 전체적으로 축소시켜 주어, 앱의 사이즈를 줄여 주는 역할을 하고, minifyEnabled은 코드를 난독 처리하여, 보안 강..
앱을 배포하는데 이슈가 생겼다. 이 이슈에 대해선 글을 하나 더 써야겠다. 오늘은 3문제를 풀었는데, 한 문제는 백준이 중간에 서버가 이상하여 풀다 말았다. 내일 올려야겠다. 오늘은 두 문제를 풀었다. 10951 import java.util.StringTokenizer; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in))..
오늘은 여자 친구와 벚꽃을 보러 갔다 왔다. 아침에 조기축구까지 해서 너무 피곤하다.. 하지만 한 문제라도 풀자.. 10871 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.i..
오늘은 채팀장님과 술을 마시고 와서, 시간이 늦어 하나만 풀어보았다. StringBuilder에 익숙해지고 있다. append와 replace에 익숙해지자. https://github.com/qjsqjsaos/CodingTest GitHub - qjsqjsaos/CodingTest: 하루에 하나씩 목표로 하는 코딩테스트 하루에 하나씩 목표로 하는 코딩테스트. Contribute to qjsqjsaos/CodingTest development by creating an account on GitHub. github.com 2439 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public..
오늘은 3문제를 풀었다. 문제를 풀다가 String과 StringBuffer와 StringBulider의 차이점에 대해서 검색해보았다. String 같은 경우는 하나의 메모리 주소를 가지고 있기 때문에 값이 변하지 않는 immutable 성격을 가지고 있다. 그런데 이 String의 문자열을 붙이면, 기존의 있던 String의 주소가 힙 메모리에 임시로 저장되게 되어, 성능 저하로 이어진다. 이러한 문제를 해결하기 위해 두 가지 해결방안이 제시된다. StringBuffer와 StringBuilder이다. 이 둘 중 어느 것을 써도 상관은 없다. 하지만, 코드 양이 많아지고, 문자열 연산이 많아지면, 두 개중에서 적절한 것을 사용해야 한다. StringBuffer 같은 경우는 동기화를 고려하고, 멀티 스레..
오늘 부터 풀은 문제를 깃헙에 정리해서 올리려고 한다. https://github.com/qjsqjsaos/CodingTest GitHub - qjsqjsaos/CodingTest: 하루에 하나씩 목표로 하는 코딩테스트 하루에 하나씩 목표로 하는 코딩테스트. Contribute to qjsqjsaos/CodingTest development by creating an account on GitHub. github.com 2741 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRead..
아고.. 이번 주가 앱 배포라 바쁘다. 최근에 사이드 프로젝트에도 참여하려고 했으나.. 여유가 없으니./ 우선 코딩테스트를 더 적응하고 나서 해도 늦지 않을 것 같다. (아니면 병행을 해도..) 8393 이 문제는 전 문제와 비슷하여 쉽게 풀었다. import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); int value = Integer.parseInt(bf.readLine()); int result = 0; for(int i = 1; i
오늘 우리나라와 UAE와 축구가 하는 날이다.. 쉽더라도 두 문제만 풀고 어서 축구를 보려고 한다. 두문제 모두 Stream과 StringTokenizer를 이용하여 쉽게 해결하였다. 2739 import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws IOException{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); int num = Integer..
오늘 풀어본 코딩 테스트는 백준 "주사위 세 개"라는 문제였다. 코딩 테스트를 진행할 때 나는 문제 푸는 것에만 즉, 정답을 맞히는 것만 집중을 하다가 오늘은 명확하게 잘 알 수 있게 코드를 정리하면서 쓰는 것에 집중하여 작성하였다. 코드 스타일에 대해서 좀 더 신경을 써보자. 3개의 주사위가 모두 같을 때를 구분하기 위해 불리언 값으로 미리 나누어 두었는데, 마지막에 if를 세 개를 써서 사용하니, 예외 처리를 하지 못해 답이 올바르게 나옴에도, 틀렸습니다가 나왔다. 되도록이면 if if else else 문으로 사용을 해야겠다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; impo..
바쁘다 바뻐... 회사일도, 코딩 테스트도 준비하다보니, 글을 많이 쓰지 못했다. 거의 한달만에 글을 쓰는 것 같다. 이제 매일매일 하루에 하나 이상 코딩 테스트를 풀고 기록하려고 한다. 다음은 내가 푼 백준 오븐시계 이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; import java.lang.Math; public class Main{ public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new ..
너무 오랜만에 글을 써서 어색하다. 요 며칠 동안 코딩 테스트, 스마트 스토어 준비, 회사 앱 개발, 마블 정주행 등등.. 아무쪼록 빈틈없는 바쁜 날들을 보내고 있다. 오늘은 카카오톡 로그인 기능을 구현하고, 디버그와 릴리즈 해시 키를 등록하였음에도 불구하고, KakaoTalk is installed but not connected to Kakao account. 같은 오류가 뜨는 이유를 알아보자. 위에 영어 뜻은 카카오톡은 설치되엇지만, 카카오 계정이 연결되지 않았다는 뜻이다. 말 뜻 그대로, 카카오톡은 설치했지만, 카카오톡 로그인을 하지 않았다는 뜻이다. 이에 대한 예외 처리를 해주면 된다. 다음 코드를 보자. public void signInKakao(Context context) { this.co..
오늘은 간단히 터미널로 private 되어 있는 깃 레포지터리를 가져오는 방법을 알아보겠다. git clone https://[git userName]:[git password or git token]@github.com/[repositary path] 정말 간단하다 터미널에 다음과 같이 입력한다. git userName은 이 녀석이고, git password or git token에다가는 깃 비밀번호나 토큰 값을 넣어주면 된다. 나 같은 경우는 토큰을 넣었다. 그리고 repositart path에다가는 깃 주소를 넣어준다. 이 드래그 친 부분을 넣어주면 된다. 이런식으로 넣어주면 된다.
안드로이드 레트로핏을 연동 rxJava2를 통해 스트림으로 서버를 호출하였다. 그런데 하루 종일 다음과 같은 오류가 계속 떴다. Unable to create call adapter for io.reactivex.Observable for method LeaveOutApi.postLeaveOutUser 호출하는 어뎁터를 만들 수 없다는 뜻인 것 같은데, 해결법을 찾아보니, .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 레트로핏 빌더에다가 다음과 같은 AdapterFactory를 추가해주라는 것이었다. 하지만 이미 난 레트로핏에다가 추가를 해주었다. 그렇다면 무엇이 문제일까? 문제는 이것이었다. REST를 호출하는 인터페이스 부분에서 Observa..
요즘 일찍 일찍 자는 중이다. 취미도 잘 즐기고 있고, 코딩도 즐겁게 하고 있다. 12시에 자야 하고, 배운 것도 써야 하니, 오늘 배웠던 것은 크립토 라이브러리이다. https://developer.android.com/guide/topics/security/cryptography?hl=ko 암호화 | Android 개발자 | Android Developers Android의 암호화 기능을 알아보세요. developer.android.com 자세한 정보는 이 곳에서 볼 수 있다. 암호화는 보통 로그인을 할 때 아이디나 비밀번호 등 보안을 위한 값들(키 스토어 라이브러리 사용을 하는 경우이지만 여기서는 암호화)을 보통 암호화를 해주고 서버에 보내주곤 한다. 보통 크게 암호화에는 두 가지가 있다. 대칭 암..
이 글은 간단한 인터페이스에 대한 예제만을 보여드립니다. 깊게는 들어가지 못하는 제 게으름과 실력을 탓합니다. flutter만 하다가 자바로 넘어온 지 어언 2주가 넘어간다. 문득 궁금한 기능이 생겼는데, 바로 A라는 액티비티에 있는 메서드를 내가 B액티비티 혹은 프래그먼트에 있을 때, 실행시키고 싶다면 어떻게 해야 할까? flutter에 경우는 생성자로 Function을 넘겨주어 그 function을 실행하면, 생성자를 넘겨준 쪽에서 이 함수가 실행이 되었다. 그렇다면 자바에서 어떻게 할까? 바로 인터페이스다. 나도 항상 이 인터페이스를 그날그날 이해하면서도, 잘 모르고 넘긴 경우가 있다. 사실은 아직도 잘 모르지만, 이번에 내가 위와 같은 상황에서 인터페이스를 활용하는 법을 기록하기 위해 적어둔다. ..
간혹 이런 일이 있는 듯하다. 나 또한, 회사에서 디바이스별로 대응하기 위해서도 있지만, 일반적인 디바이스와 태블릿 디바이스로 크게 나누었을 때, 일반적인 디바이스에서 크기를 고정해서 앱을 출시하는 쪽으로 가는 경우 말이다. 그런 경우 때문에 회사에 요구대로 기존 텍스트를 sp로 사용했던 것을 dp로 변환하는 작업을 하게 되었다. 하지만, 이미 만들어진 앱은 모든 text가 sp로 되어 있었다. 나는 그래서 답을 찾았다. sp로 되어 있어도, 모든 앱을 sp 자체를 고정시킨 값으로 디바이스에 적용시킬 수 있다. 바로 다음 코드이다. @Override protected void attachBaseContext(Context newBase) { final Configuration override = new ..