외부 API를 사용하는 경우 일반적으로 Key Hash 값을 통해 사용자를 인증합니다. 여기서 해시란 무엇이고, 안드로이드 개발 시 키 해시를 얻는 방법과 그 활용법에 대해 설명합니다. #1> Hash Key란? 오픈 API (카카오맵, FCM, Facebook 로그인 등) 를 사용하려면 해시키를 등록해야 하고, Key Hash가 등록된 앱만 SDK를 이용해 API를 호출할 수 있다고 합니다. 이 키 해시(Key Hash)가 무엇이길래 등록을 반드시 해야만 사용할 수 있다고 하는걸까요? 키 해시는 특정 데이터(data)를 해시 함수(hash function)에 입력한 결과로 받은 리턴값을 말합니다. key hash를 이해하기 위해서는 이를 생성하는 해시 함수에 대해 이해해야 합니다. 같이 살펴볼까요? #..
#_ Condition Operator, What the fun!? 삼항연산자의 활용에 대해 물어보면 시니어 프로그래머라면 잘 아시겠지만, 주니어 프로그래머의 경우 알고는 있지만 사용하지 않는다던가, 처음 들어보는 경우가 있을겁니다. 나는 입문할 당시 책에서 배웠었나? 하는 궁금증이 생겨 책장에 있는 자바 책을 뒤적여 봤습니다. Java 입문서로 널리 알려진 Head First Java 책의 47페이지 조건문에 따른 분기문 챕터에서는 언급하고 있지 않네요.. 남궁성님이 집필하신 자바의 정석에서는 다루고 있군요. 그도 그럴것이 삼항연산자는 몰라도 괜찮은(?) 녀석이기 때문입니다. 우리에겐 강력한 if/else가 있으니까요. 수년간 자바를 통해 개발을 해온 제 입장에서 삼항 연산자는 안써도 좋지만 쓰면 더 ..
개요 필자는 모 사이트에서 프로그래밍 문제를 해결하던 중, 입력된 데이터를 오름차순으로 정렬하여 리턴하라는 문제가 있어 해당 메소드에 대해 알아보았다. List에는 데이터 정렬을 위한 sort라는 메소드가 존제한다. 물론 List를 상속받는 ArrayList 또한 이 sort 메소드를 사용할 수 있다. 이를 통해 편리하게 오름차순 혹은 내림차순으로 데이터 정렬이 가능하다. Comparable를 구현(implements)하는 클레스 정렬을 하기 위해서는 리스트 속 데이터 간 크기 비교가 가능해야한다. 즉, 리스트 안에 들어있는 오브젝트의 수치화가 가능해야 한다는 것. Java에서는 비교가 가능한(수치화가 가능한) 오브젝트들은 Comparable 인터페이스를 implements 하고있으며 우리가 사용하는 대..
문제 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? 풀이 필자 개인적으로는 매우 재미있는 문제라고 생각한다. 방법은 많겠지만 필자는 아래와 같은 순서로 문제를 풀고자 했다. 해당 숫자가 대칭수인지 확인하는 함수를 작성100~999 숫자의 곱의 모든 조합을 확인 곱의 조합 중 가장 큰 대칭수를 출력 대칭수는 앞으로 읽어도, 뒤로 읽어도 같은 모양인 숫자를 말한다. 어떤 숫자 x 가 대칭수인지 확인하기 위해서는 해당 숫자를 뒤집은 y를 구한 뒤 x == y 를 확인해야한다. Array를 만들어 ..
문제 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.600851475143의 소인수 중에서 가장 큰 수를 구하세요. 풀이 우선 어떤 숫자가 소수인지 아닌지를 구분할 수 있는 소수 판별 알고리즘을 작성해보자. 소수의 정의는 다음과 같다. " 1과 자기 자신 외에 어떠한 숫자와도 나누어 떨어지지 않는 수. " 이러한 사실을 기반으로 소수 판별 알고리즘을 아래와 같이 작성할 수 있다. /* 소수인경우 true를 리턴 */private boolean isSosu(long x) { boolean isSosu = true; if (x == 1 || x == 2) return true; for (lon..
문제 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까? 풀이 피보나치 수열의 규칙은 다음과 같다.처음 항은 1이다.두번째 항은 2이다.1과 2를 제외한 n번째 항은 (n-1번째 항)+(n-2번째 항) 이다. 위 규칙을 기반으로 피보나치 수열을 구하는 알고리즘은 다음과 같이 표현할 수 있다. while(true) { fiboIdx_03 = fiboIdx_01 + fiboIdx_02; fiboIdx_01 = fiboIdx_02; fiboIdx_02 = fiboIdx_03; } 아래와 같이 위 알고리즘에 짝수이면서 ..
Scanner Class Scanner는 J2SE 5.0부터 java.util 패키지에 포함된 클래스로서 C 언어의 scanf()함수와 비슷한 기능을 제공한다. 즉, 원하는 자료형만을 입력받을 수 있다. 생성자static Scanner create(File source) ; 주어진 파일의 내용을 읽을 수 있는 Scanner 객체를 리턴한다.static Scanner create(InputStream source) - InputStream에서 데이터를 읽을 수 있는 Scanner 객체를 리턴한다. 메소드boolean hasNext() - 다음 토큰의 유무를 리턴한다. 있다면 true.boolean hasNext() - 에 해당되는 토큰의 유무를 리턴한다.String next() - 다음 토큰을 문자열 형태..
StringTokenizer 클래스는 문자열을 개별적인 토큰으로 분리하는 방법을 제공한다. 또한 java.util 패키지에 속해있으며 다음과 같은 생성자를 가지고 있다. (따라서 사용하기 위해서는 import java.util.*; 반드시 써줘야 한다.) StringTokenizer(String str) - 문자열 str을 기본적인 구별자("\t\n\r")를 이용해서 토큰을 구별하기 위한 생성자이다.StringTokenizer(String str, String delim) - 문자열 str을 구별자(delim)를 이용해서 토큰을 구별하기 위한 생성자이다.StringTokenizer(String str, String delim, boolean returnToken) - 문자열 str을 구별자(delim)을..
Vector 클래스는 동적으로 크기가 변하는 배열의 일종으로 볼 수 있다.일반 배열은 크기가 고정되어있는 것에 비해, Vector는 크기가 동적이기 때문에 크기가 확정되지 않은 배열을 사용하는 경우에 편리하다.Vector는 다음과 같은 세 개의 생성자를 가지고 있다. ( Vector 클래스는 java.util 패키지에 속해있다.)Vector() - 크기가 10인 디폴트 벡터를 생성한다.Vector(int initialCapacticy) - 초기 벡터의 크기를 initialCapacity로 만든다. 크기가 부족한 경우에는 2배씩 커진다.Vector(int initialCapacity, int capacityIncrement) - 초기 백터의 크기를 initialCapacity로 만들고, 부족할 때마다 ca..
- Total
- Today
- Yesterday
- 안드로이드
- android studio
- kotlin 기초
- 문제풀이
- Android
- 코딩문제
- 프로그래밍
- LiveTemplate
- 런탭
- 자바
- live template
- 안드로이드 바텀시트
- php
- 코틀린 기초강의
- 프로젝트오일러
- Kotlin
- compose bottomsheet
- Programming
- 영어발음
- 컴포즈 바텀시트
- 영어회화
- 안드로이드 컴포즈
- 안드로이드 스튜디오
- 안스 템플릿
- 코틀린 기초
- 개발자
- Java
- 코틀린
- 코딩
- 안드로이드 스튜디오 라이브 템플릿
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |