본문 바로가기

전체 글

(38)
[백준 7568번] 덩치 문제 -Java 사람의 덩치로 등수를 정하는 문제입니다. 덩치가 큰 사람이 순위가 높은 것인데 문제에서 정의하는 "덩치가 큰 사람"은 몸무게가 더 많고 키가 더 큰 사람을 말합니다. 즉, 몸무게나 키 중 1개라도 작은 수치를 가진다면 덩치가 크다고 할 수 없습니다. 덩치를 비교한 결과는 아래의 3개로 나타납니다. A) 몸무게와 키 모두 크다. B) 몸무게와 키 어느 하나가 크지 않다. C) 몸무게와 키 모두 작다. 순위가 높아지는 결과는 A)이고, 그렇지 않은 경우는 B)와 C)입니다. 따라서 모두의 순위가 1순위로 가정하고 A)의 경우가 아니면 순위를 하락시키는 방법을 생각했습니다. 1. 알고리즘 몸무게, 키 데이터 및 덩치를 비교하는 메소드를 관리하고자 'Pair'라는 class를 정의했습니다. // 몸무게 및 키를..
[Android] 홍드로이드 기초 강의 - Camera 촬영 및 Image 가져오기_환경설정 카카오톡에서 사진을 보낼 때 2가지 방법이 있습니다. 하나는 앨범에서 이미지를 가져오는 것이고, 다른 하나는 이미지를 촬영해서 보내는 방법입니다. 여기서 이미지를 촬영해서 보내는 방법을 선택하면 "카메라 - 사진 촬영 - 카메라 어플 실행"의 과정을 거칩니다. 이처럼 앱에서 기본 카메라를 실행 및 촬영하고, 이미지를 앱으로 가져오는 기능을 학습했습니다. 기초 강의라고 하기엔 코드가 길고 설명이 부족한 요소들이 다소 있어서 환경설정 파트와 Main 코드 파트로 나누어서 작성할 계획입니다. 1. 권한 허용 라이브러리 적용 및 Manifest 설정 이번에 학습한 예제가 카메라와 저장장치에 대한 접근 권한이 필요한 앱입니다. Android 6.0 마시멜로 버전부터는 권한 허용/거부 프로세스가 강화되어 사용하기 ..
[Android] startActivity()와 startActivityForResult()의 차이점 애플리케이션을 개발할 때는 다수의 Activity(화면)을 코딩하게 됩니다. 하나의 Activity로는 서비스를 제공하는 데에 있어서 많은 제한이 있기 때문입니다. 즉, 용도에 맞는 Activity들이 존재하고, 알맞는 시기에 화면 전환이 이루어져야 합니다. 단순히 새로운 Activity를 열어주는 경우도 있고, Sub Activity의 결과값을 Main Activity로 넘겨줘야 하는 경우도 있습니다. 이런 활동을 startActivity()와 startActivityForResult()가 지원합니다. 1. startActivity() startActivity()는 단순히 새로운 Activity를 시작할 때 사용합니다. 앞서 intent 화면 전환 포스팅에서도 사용한 것이 startActivity()입..
[Android] 홍드로이드 기초 강의 - SharedPreferences로 데이터 세이브/로드 1. SharedPreferences란? SharedPreferences는 애플리케이션 내부에 저장된 기본 설정 데이터를 액세스하고 수정하기 위한 인터페이스입니다. 애플리케이션을 동작함에 있어 많은 데이터들이 필요합니다. 예를 들어, 맞춤 서비스를 제공하기 위해서 데이터를 분석해야 하는 경우는 데이터를 DB에 저장해서 관리합니다. 반대로 사용자의 아이디 및 비밀번호, 환경설정 등과 같이 비교적 간단한 데이터들은 애플리케이션 내부에 저장하는 것이 수월합니다. 바꿔 말하면 자동 로그인, 광고 on/off를 SharedPrefernces로 서비스할 수 있습니다. 데이터를 저장하는 장소가 애플리케이션 내부라고 설명했습니다. 이는 애플리케이션이 삭제되면 데이터도 함께 삭제되므로 주의해야 합니다. 파일 경로 = d..
[Android] 홍드로이드 기초 강의 - TextView, EditText, Intent 화면 전환 1. TextView 안드로이드 화면에서 Text를 표기하기 위해 사용하는 뷰 위잿입니다. TextView를 사용하기 위해선 layout 파일에 를 추가해주어야 합니다. 위의 이미지를 보면 2개의 TextView가 작성된 모습을 볼 수 있습니다. TextView를 생성하면 기본적으로 layout_width, layout_height, text 속성이 표시됩니다. layout_width는 가로 길이, layout_height는 세로 길이입니다. 속성값으로 정수를 넣을 수 있지만, text가 잘릴 수 있습니다. 주로 사용하는 속성값은 wrap_content와 match_parent입니다. wrap_content는 TextView에 작성된 text의 사이즈에 맞춘다는 의미이고, match_parent는 상위 ..
AMD 라이젠 CPU에서 가상머신(AVD) 실행하기 goormedu에서 강의를 듣기 위해서 Android Studio를 설치하고 AVD도 설치했습니다. 이전 노트북에선 AVD가 설치되면 알아서 디바이스를 인식하고 실행할 수 있었는데 No target device found error가 발생했습니다. 구글링으로 해결법을 찾다가 AVD가 제대로 동작하려면 HAX(Intel® Hardware Accelerated Execution) 서비스가 설치되어야 한다는 블로그 내용을 찾을 수 있었습니다. 해당 서비스는 Intel에서 제공하는 것이고, 바뀐 제 노트북은 AMD이므로 혹시나 하는 마음에 "AMD CPU에서 AVD 동작하기"로 검색해보았습니다. 다행이 올바른 방법을 찾아서 해결할 수 있었습니다. 아래에 해결법 작성해놓겠습니다. 1. Android Studio에..
[프로그래머스 2021 카카오] 숫자 문자열과 영단어 알고리즘) 영문자로 입력되는 숫자를 해당하는 숫자로 대체시키는 문제입니다. String형태여서 한 문자씩 읽을 수 있기 때문에 문자가 숫자인 경우와 영문자인 경우로 나눠서 코딩했습니다. 먼저 한 문자씩 읽어야 하므로 아래와 같이 String의 charAt() 메소드를 활용했습니다. String s = "2three45sixseven" int idx = 0; System.out.println(s.charAt(idx));// 2 읽어들인 문자가 숫자인 경우는 바로 결과값에 더해주기만 하면 됩니다. 반대로 영문자인 경우는 숫자로 변환해주고 결과값에 반영해야 되기 때문에 HashMap을 활용했습니다. // 영어단어를 숫자로 매핑 MapnumWord = new HashMap(); numWord.put("zero"..
[백준 2231번] 분해합 문제 - Java 완전 탐색 알고리즘) 문제에서 정의된 N의 생성자 M들 중에서 가장 작은 생성자를 구해내는 프로그램을 작성하라고 제시하였습니다. 따라서 1부터 하나씩 분해합을 구하고, 생성자가 맞는지 확인하도록 코드를 작성하고자 했습니다. 첫 번째 시도) M을 1부터 시작해서 분해합을 구한 다음에 N과 비교하게 됩니다. 만약 분해합이 N과 동일하면 해당 값을 result 변수에 저장하고 반복문을 탈출하는 반면, 동일하지 않으면 코드를 반복 수행하게 됩니다. import java.util.Scanner; public class decompose_2231 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.next..