전체 글 (41) 썸네일형 리스트형 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.. [백준 2798번] 블랙잭 문제 - Java 완전 탐색 알고리즘) 주어진 조건을 모두 비교해서 답을 찾는 기법으로, 재귀함수를 통해서 해당 문제를 해결해보았습니다. 첫 번째 시도) 아래의 코드를 백준에 제출한 결과로 런타임 오류가 출력되었습니다. 시간 제한과 주어진 숫자의 최대 개수를 고려했을 때, 정수의 합을 구하는 반복문 구절에서 제한시간을 넘긴 것 같았습니다. import java.util.Scanner; public class blackjack_2798 { static int N = 0, M = 0; public static void main(String[] args) { int black = -9999; Scanner sc = new Scanner(System.in); N = sc.nextInt();// 입력받을 정수들의 개수 M = sc.. [JAVA] I/O (Input/Output) I/O란 Input/Output의 줄인 말인 I/O은 입력과 출력을 의미합니다. 예를 들어, 우리가 컴퓨터에게 데이터를 입력하기 위해 키보드를 입력하는 것을 Input이라 할 수 있고 입력받은 데이터를 적절하게 처리하여 화면에 출력하는 것을 Output이라 할 수 있습니다. 자바에서 콘솔 창에 데이터를 출력할 때 System.out.println()을 주로 사용했을 것입니다. 사실 이것은 내부적으로 스트림을 활용한 것입니다. System.out.println()의 경우 매개변수로 PrintStream(데이터를 적절한 문자로 출력하는 문자 기반 스트림)을 받습니다. 그리고 Scanner 클래스 생성 시에 Scanner.in을 받는데, 이게 InputStream 입니다. 이러한 동작을 할 수 있도록 도와주는.. [JAVA] 람다식(Lambda) 람다식 람다식이란 하나의 메소드를 간략하게 표현하는 것을 말합니다. // 일반 메소드 int max(int x, int y) { return x > y ? x : y; } // 람다식 (x, y) -> x > y ? x : y; 위의 예제처럼 메소드를 람다식으로 표현하면, 클래스를 작성하고 객체를 생성하지 않아도 메소드를 이용할 수 있습니다. 자바에서는 클래스의 선언과 동시에 객체를 생성하게 되므로, 단 하나의 객체만을 생성할 수 있는 클래스를 익명 클래스라고 합니다. 따라서 자바에서 람다식은 익명 클래스와 같다고 할 수 있습니다. // 람다 표현식 (x, y) -> x y .. [JAVA] 어노테이션(Annotation) 어노테이션(Annotatio)이란 어노테이션은 사전적 의미로 주석을 뜻합니다. 자바에서 사용될 때의 어노테이션은 코드 사이에서 주석처럼 쓰여 특별한 의미, 기능을 수행하는 기술입니다. 즉, 어노테이션이란 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종입니다. 보통 @ 기호를 앞에 붙여서 사용하고, JDK 1.5 버전 이상에서 사용 가능합니다. 메타데이터(meta data) 데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해주는 데이터 어노테이션은 아래와 같은 용도로 사용됩니다. 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공합니다. 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공합니다. 실행 시(run time) 특정 기능을 실행하도록 정보를 제공합니.. [JAVA] Enum(열거형) 열거 타입(Enum Type)의 등장 자바의 열거 타입(Enum Type)은 자바 1.5부터 등장하기 시작했습니다. Enum이 등장하기 이전에는 상수값 관리를 정수 열거 패턴(int enum pattern)으로 했습니다. 정수 열거 패턴은 static final로 불변의 상수값을 만들어 사용하는 것입니다. 네이밍 규칙은 대문자로 하며, 변수명을 의미 있고 다른 상수들과 구분 지을 수 있도록 지어야 합니다. Enum은 이미 선언된 Enum 상수 외의 객체는 사용할 수 없으며, toString 메소드를 호출하면 인쇄 가능 문자열로 쉽게 변환할 수 있습니다. int enum pattern 아래는 정수 열거 패턴의 예시입니다. public class Frutis { private static final int .. 이전 1 2 3 4 5 6 다음