개요 필자는 모 사이트에서 프로그래밍 문제를 해결하던 중, 입력된 데이터를 오름차순으로 정렬하여 리턴하라는 문제가 있어 해당 메소드에 대해 알아보았다. List에는 데이터 정렬을 위한 sort라는 메소드가 존제한다. 물론 List를 상속받는 ArrayList 또한 이 sort 메소드를 사용할 수 있다. 이를 통해 편리하게 오름차순 혹은 내림차순으로 데이터 정렬이 가능하다. Comparable를 구현(implements)하는 클레스 정렬을 하기 위해서는 리스트 속 데이터 간 크기 비교가 가능해야한다. 즉, 리스트 안에 들어있는 오브젝트의 수치화가 가능해야 한다는 것. Java에서는 비교가 가능한(수치화가 가능한) 오브젝트들은 Comparable 인터페이스를 implements 하고있으며 우리가 사용하는 대..
싱글톤(Singleton) 이란? 싱글톤은 딱 하나의 인스턴스만 생성할 수 있는 클래스다. 때문에 싱글톤은 앱이 메모리에 있는 한 계속 존재한다. 이러한 특징으로 인해 데이터를 싱글톤으로 관리할 경우 앱의 생명주기동안 고유한 데이터 사용을 보장할 수 있다. 하지만 Android OS가 Application을 메모리에서 제거할 때 같이 소멸되기 때문에 장기간 데이터 보존을 위한 솔루션은 아니다. (장기간 데이터 보존을 위한 솔루션으로는 SQLite, 서버 통신 등이 있다) 싱글톤의 특징 자기 자신을 저장하기 위한 static object를 갖는다. private 생성자를 갖는다. 인스턴스 반환을 위한 get 메서드를 갖는다. 만약 자신의 인스턴스가 있다면 get 메서드를 통해 기존 인스턴스를 반환한고, 반..
게터와 세터(getter and setter) getter와 setter는 말 그대로 어떤 오브젝트 혹은 변수의 값을 가져오거나, 설정해주는 역할을 하는 메소드를 말한다. 이들은 다음과 같은 규칙을 가지고 있다. getterreturn type은 참조할 맴버변수의 자료형과 일치해야 한다.이름 앞에 get 을 붙이고 뒤에는 리턴할 맴버변수의 이름 혹은 해당 변수를 직관적으로 표현하는 단어가 와야한다.ex) int getLength(); setterreturn type은 void 혹은 값의 설정 결과를 알려줄 수 있는 type이어야 한다.argument는 수정할 맴버변수와 같은 type이어야 한다.이름 앞에 set을 붙이고 뒤에는 수정할 맴버변수의 이름 혹은 해당 변수를 직관적으로 표현하는 단어이어야 한다...
문제 1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).12 + 22 + ... + 102 = 3851부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).(1 + 2 + ... + 10)2 = 552 = 3025따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다.그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까? 연구 문제만 봐도 로직이 생각날 정도로 매우 직관적이고 간단한 문제다. 변수를 1부터 100까지 증가시키면서 '제곱의 합' 과 '합의 제곱' 을 구해 두 값의 차를 구하면 될 것 같다. 풀이 '제곱의 합' 과 '합의 제곱' 을 구할 변..
문제 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다. 그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 연구 이 문제는 1부터 20까지 모든 숫자의 최소공배수를 구하는 문제다. 분명 수학적 원리를 통해 이를 구하는 공식이 있겠지만, 그러한 공식을 검색하며 푸는건 마치 반칙을 저지르는 기분이므로 필자는 노트와 팬을 꺼내 규칙을 찾아보기로 했다. 1~10의 최소 공배수가 2520 임을 알고있으므로 이를 토대로 분석해본 결과, 작은 수부터 1을 제외한 어떠한 공약수가 없을 때 까지 소수로 전체 숫자를 나눈 남은 모든 숫자의 곱이 최소공배수이다. 위와 같은 결론을 도출할 수 있었다. 글로만 봐서는 잘 이해가 되지 않을 수 있기 때문에 그림과 함께..
scanf 의 parameter는 아래와 같이 3가지로 분류된다. Whitespace charaterNon-whitespace character, except format specifier(%)Format specifier 여기서 whitespace는 아래 중 하나를 말하며, EOT(End of Text)로 인식한다. ' '(0x20)space (SPC)'\t'(0x09)horizontal tab (TAB)'\n'(0x0a)newline (LF)'\v'(0x0b)vertical tab (VT)'\f'(0x0c)feed (FF)'\r'(0x0d)carriage return (CR) 위 표에서도 나와있듯이 공백은 whitespace중 하나이기 때문에 데이터가 아닌 종료문자로 인식된다. 따라서 아래와 같은 코..
~ Git commit message 수정 방법 ~ 원인 필자는 Windows 노트북 2대와 Macbook 1대를 가지고 장소에 따라 골라서 사용중이기 때문에 3개의 pc간 호환성이 중요하다. 근데... eclipse를 통해 프로젝트 오일러 문제풀이 project를 관리하던 중 문제가 생겼다. windows 에서 문제없이 보이던 한글이 mac os eclipse에서는 깨져 보였던 것. 구글링을 통해 알아본 결과 defualt encoding이 문제였다. windows eclipse는 defualt로 MS949가 설정되어있고, mac의 경우는 UTF-8로 설정되어 있다. http://mwultong.blogspot.com/2006/11/cp949-ms949-euc-kr-ksc5601-1987.html 위 ..
문제 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(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..
- Total
- Today
- Yesterday
- 안드로이드 스튜디오 라이브 템플릿
- LiveTemplate
- 코틀린 기초
- 코딩문제
- 개발자
- 안드로이드 스튜디오
- 코틀린
- 안드로이드 바텀시트
- 프로그래밍
- 코틀린 기초강의
- 영어회화
- Kotlin
- 런탭
- 영어발음
- 안드로이드
- kotlin 기초
- Java
- compose bottomsheet
- php
- 안스 템플릿
- 컴포즈 바텀시트
- android studio
- 문제풀이
- 코딩
- 프로젝트오일러
- Programming
- 안드로이드 컴포즈
- Android
- live template
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |