전체 글

I’m currently learning Android, ComputerScience, Algorithm and etc....
Android/Study

[Android] onNewIntent()에 대해서 알아보자.

onNewIntent()란 onNewIntent는 안드로이드 액티비티(Activity) 생명주기(LifeCycle)에 속하는 콜백 메소드 중 하나이다. 이 메소드는 현재 액티비티가 이미 생성되어 있고, singleTop, singleTask 또는 singleInstance와 같은 특정 launch mode를 가지고 있을 때, 새로운 인텐트로 인해 액티비티가 다시 시작할때 호출된다. 즉 onNewIntent()는 매니페스트에서 액티비티의 launchMode를 singleTop으로 설정하거나, FLAG_ACTIVITY_SINGLE_TOP 플래그를 썼을 경우, 액티비티 스택의 최상위 액티비티가 새로운 인텐트를 통해 재시작될 때 호출되는 메서드다. 왜 사용하는가? 인텐트 업데이트 : 실행 중이던 액티비티가 새 ..

Android/Study

[Android] OkHttp에 대해서 공부해보자. (feat. Refrofit)

Retrofit에 대한 간단 정리 https://superohinsung.tistory.com/151 [Android] Retrofit Retrofit이란 Retrofit은 안드로이드 앱에서 RESTful API와 통신할 때 사용되는 라이브러리 중 하나입니다. Retrofit은 Square Inc.에서 개발된 오픈 소스 라이브러리로, 안드로이드 앱 개발을 위한 RESTful API superohinsung.tistory.com OkHttp란 OkHttp는 안드로이드 개발에서 인터넷을 통한 데이터 교환을 위해 널리 사용되는 오픈소스 HTTP 클라이언트 라이브러리이다.Square Inc.에 의해 개발되었으며, HTTP 요청을 보내고 받는 것을 간소화하고, 네트워크 속도가 느린 환경에서도 효율적으로 동작하도록..

BaekJoon

[Baekjoon] 17837번 새로운 게임 2 (Java) 문제 풀이 [Gold 2]

문제 https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net 어떻게 풀 것인가? 이번 문제도 빡 구현이었다. 사실 문제를 처음에 읽었을 때는 그다지 어렵지않다고 생각을 하였으나, 이번에도 생각보다 조건이 까다롭다고 느꼈다. 특히나 2번 빨간색일때, 빨간색인 경우에는 이동한 후에 A번 말과 그 위에 있는 모든 말의 쌓여있는 순서를 반대로 바꾼다. 이 부분을 해결하기 위해서 전체적으로 자료구조를 뒤엎어야만 했다. 그 외 부분은 읽으면서 코드로 옮긴다면..

BaekJoon

[Baekjoon] 17779번 게리맨더링 2 (Java) 문제 풀이 [Gold 3]

문제 https://www.acmicpc.net/problem/17779 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름도 www.acmicpc.net 어떻게 풀 것인가? 사실 문제 자체가 길고, 너무 난해해서 어려웠던 문제 하지만, 문제를 이해하고 시키는 조건들을 코드로 바꾼다면 그리 어려운 알고리즘은 없는 그런 문제였다. 즉, 정말 빡센 브루트포스 + 구현 문제였다. 경계선을 구하기 위해서 단지 모든 경우의 수를 계산해야하만 한다. 즉, X,Y,D1,D2 모두를 4중 For문을 통해서 계속해서 경우의 수 모두를 검증하고 답을 찾는 문제였다...

BaekJoon

[Baekjoon] 13335번 트럭 (Java) 문제 풀이 [Silver 1]

문제 https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 어떻게 풀 것인가? 구현은 너무나도 어렵다. 특정 알고리즘은 외우면 된다지만, 구현은 생각해야할 것들이 너무나도 많다. 이번 문제는 큐를 이용한 구현 문제였다. 내가 푼 문제의 코드를 뜯어보자. 다리는 Queue로 선언해 준고 여기에 다리의 길이만큼 0을 넣어준다. 다리의 길이만큼 이동하면서 Queue를 계산하게 된다 Queue bridge =..

BaekJoon

[Baekjoon] 2110번 공유기 설치 (Java) 문제 풀이 [Gold 4]

문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 어떻게 풀 것인가? 처음에 감조차도 못잡았던 문제였다. 대략 1시간정도의 고민 끝에 다른 분의 풀이를 참고했다. 아마 이번 포스팅은 풀이보다는 회고 느낌으로 작성을 해야할 것 같다. 이 문제는 "이분탐색"을 물어보는 문제였다. 그렇다면 이러한 이분탐색을 어디에 활용할 수 있었을까? '최소 거리에 대해 설치 가능한 공유기'가 문제에서 주어지는..

BaekJoon

[Baekjoon] 1600번 말이 되고픈 원숭이 (Java) 문제 풀이 [Gold 3]

문제 https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 어떻게 풀 것인가? 문제를 읽었을 때, 빠르게 BFS를 떠올렸다. 하지만 문제는 말의 이때 단순히 visited배열을 2차원으로 선언해 주면 인접 노드로 이동했을 때와 말이 이동할 수 있는 위치로 이동했을 때 서로 다른 경로로 방문했지만 이를 구별할 수 없어 무조건 한번 방문한 곳은 다시 방문할 수 없다는 점을 발견했다. 그래서 이 부분에 대해서 골똘히 고민을 하다가 결국엔 ..

BaekJoon

[Baekjoon] 15685번 드래곤 커브 (Java) 문제 풀이 [Gold 3]

문제 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 어떻게 풀 것인가? 문제를 처음 읽어보신 분들이라면 아마, 문제가 해괴하다고 느낄지 모른다. 적어도 나는 그랬다. 처음에 문제를 읽었을 때 좌표 개념이 나와서 BFS나 DFS를 생각했다. 하지만 결국엔 문제가 풀리지 않아서, 다른 분의 풀이를 참고하고 나서 단순 구현 및 시뮬레이션 문제라는 점을 발견했다. 문제를 읽었을 때 가장 어려운 부분은 아마 "다음 N-1세대..

BaekJoon

[Baekjoon] 14719번 빗물 (Java) 문제 풀이 [Gold 5]

문제https://www.acmicpc.net/problem/14719 14719번: 빗물첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치www.acmicpc.net 어떻게 풀 것인가?우리가 흔히 말하는 빡구현 문제이다. 현재 블록의 높이보다 높은 블록이 왼쪽에 있어야 한다. 현재 블록의 높이보다 높은 블록이 오른쪽에 있어야 한다. 첫, 마지막 블록에는 빗물이 고일 수 없다.인덱스 별로 모이는 빗물의 정보를 더해준 다음 출력해주면 된다. 현재 인덱스를 기준으로 왼쪽에서 가장 높은 블럭과 오른쪽에서 가장 높은 블럭을 구해준 다음, 현재 블럭이 ..

BaekJoon

[Baekjoon] 18352번 특정 거리의 도시 찾기 (Java) 문제 풀이 [Sliver 2]

문제 https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 어떻게 풀 것인가? 특정 최단경로의 거리를 묻는 문제이다. 다익스트라를 이용하여 문제를 풀 수도 있지만, 나는 간단하게 BFS로 문제를 해결하였다. 최단경로를 묻는 것이 아닌 특정 최단경로의 거리를 묻는 것이기 때문에 그래프적 접근이 훨씬 좋다고 생각하였다. 풀면서 놓쳤던점 X 이 문제를 통해 얻어갈 것 BFS의 사용법..

BaekJoon

[Baekjoon] 15664번 N과 M (10) (Java) 문제 풀이 [Sliver 2]

문제 https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 어떻게 풀 것인가? 처음에는 단순 백트래킹을 이용한 조합 문제라고 생각했다. 하지만 다시보니 중복성을 제거 해야한다고 한다. 여기서 문제에 대해서 많이 생각을 했다. 결국 중복성에 대한 문제는 자료구조를 통해서 해결할 수 있었다. Set을 이용하기로 하였다. 조합을 이용한 백트레킹을 이용하였지만, 다른 사람의 풀이를 통해서 DFS 백트레킹을 이용하기로 하였다. 사실 큰 차이는 없는 것 같..

회고록

2024년 1 ~ 3월 회고록 feat 이력서

이 글은 저의 2024년 1월 ~ 3월까지의 회고록입니다. 이전의 회고록은 https://superohinsung.tistory.com/282 Notion으로 제작 포트폴리오는 -> 미리캔버스에서 제작 또한 면접을 기반하여 Kotlin을 정리하고 다양한 안드로이드 사이드 프로젝트를 진행하고, 지난 날 진행했던 프로젝트를 정리하면서 블로그에 기록으로 남겨두었다. 사실 취업준비가 처음은 아니지만 나에게는 언제나 어려운 것 같다. 잊힌 기억들을 되돌리려고 노력하고 있다. 아마 4월달부터는 면접 준비와 알고리즘을 계속 공부해야할 것 같다. 1~3월은 순식간에 지나갔지만 최종적으로 회사취업과 나의 성장을 위해서 끊임없이 노력해야겠다. 다음 포스팅에서는 상반기 결산과 내가 공부한 것들을 정리해보자.

Tenacity_Dev
인성의 개발 공부 노트