2022/06 5

[프로그래머스] 124 나라의 숫자

문제 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 풀이 언어 Python 풀이 방법 우선 진법 변환 문제이다. 좀 특이하긴 한데 3개의 숫자를 사용하므로 3진법을 생각하면 된다. 하지만 10진수 3을 변환했을 때 10이 아니라 4가 나오는 것을 볼 수 있다. 어떻게 변환을 해야하는 것일까? 우선 변환 전과 변환 후를 표로 나타내봤다. 10진법 3진법 124 나라 1 1 1 2 2 2 3 10 4 4 11 11 5 12 12 6 20 14 3으로 나누어 떨어지는 경우에만 특이한 값을 갖는 걸 볼 수 있는데 여기에도 규칙이 있다. 맨 앞 숫자에서 -1 을 하고 뒤의 0을 4로 변환해준다는 점. 즉, 3으로 나누어 떨어지는 경우 몫에서 -1을 해준다는 의미이다. 코드 def solu..

[LeetCode] 167. Two Sum II - Input Array Is Sorted

입력 예시 풀이 언어 Python 풀이 방법 정렬된 배열에서 target을 만족하는 두 원소의 index를 반환하는 문제였다. 오름차순을 정렬된 배열이었기에 BST 문제라고 생각했다. 어렵지 않게 해결했다. 코드 class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: start = 0 end = len(numbers) - 1 while start < end: mid = numbers[start] + numbers[end] if mid > target: end -= 1 elif mid < target: start += 1 else: return [start + 1, end + 1] 결과

[Android] 알림 클릭시 Activity, Fragment로 이동

구현 문제 알림 클릭하면 특정 화면을 띄어줘야 하는 문제였다. 해결 방법 PendingIntent 를 사용하면 된다. Notification 속성에 Intent 속성을 부여할 수 있는데 이 때 PendingIntent 를 넘겨준다. 또한 PendingIntent 객체에 putExtra 로 화면 이동으로 띄어줄 Fragment 의 식별자를 넘겨준다. 이를 활용하여 MainActivity 가 onCreate 됐을 때 getStringExtra 로 Fragment 의 식별자를 가져오고 해당 Fragment 로 전환한다. 코드 - ReceiverService 우선 지난번에 구현했던 이벤트 수신 알림에 대한 코드를 가져왔다. // 이벤트를 수신했을 경우 사용자에게 알림 전송 private fun occurEven..

💻 개발/Android 2022.06.08

[Android] 백그라운드에서 소켓 통신으로 이벤트 수신 후 알림

구현 문제 졸업프로젝트를 진행하면서 서버에서 특정한 이벤트를 수신하면 이벤트 종류에 따라 서로 다른 2개의 알림을 띄어주는 기능을 구현해야 했다. 소켓 통신으로 이벤트를 수신하는데 Activity 이동이나 Fragment 이동에 관계 없이 서버와 연결 가능한 소켓 통신이 필요했다. 해결 방법 MVVM과 단일 Activity를 사용했기에 Activity는 MainActivity 한 개 뿐이었고 MainActivity 에서 소켓 통신을 구현하면 되는 문제였다. 하지만 앱을 사용하지 않는 상황에서도 알림을 수신해야 할 필요가 있었고 이를 위해 Service를 사용했다. 물론 MainActivity 안에 해당 기능을 구현할 수 있다. 하지만 소켓 통신이 MainActivity 자체에 종속되는 상황이 발생하기에 ..

💻 개발/Android 2022.06.08

[TIL] 22.06.03

iOS 에서 화면 이동을 하는 방법에는 4가지가 있다. ViewController 에서 화면 전환 ViewController 가 다른 ViewController 를 호출하여 화면 전환 NavigationViewController 를 사용하여 화면 전환 화면 전환용 객체 Segue 를 사용하여 화면 전환 1. ViewController 에서 화면 전환 ViewController 위의 View 를 다른 View 로 교체하는 방식으로 메모리 누수로 인해 사용을 지양한다. 특정한 경우에만 사용한다. 안드로이드에서는 View 의 Visibility 속성을 이용하여 변경하는 방식을 자주 사용했었는데 iOS 에서는 지양한다고 하니 좀 신기했다. 이 부분에 대해선 좀 더 찾아보고 정리해봐야겠다. 2. ViewContr..

💻 개발/TIL 2022.06.03