블로그 최신 글
-
프로그래머스 숫자 짝꿍 with 자바
https://school.programmers.co.kr/learn/courses/30/lessons/131128 풀이 X와 Y가 가지고 있는 숫자들 중에서 중복된 숫자들만 찾으면 된다 우선 X를 한 글자씩 돌면서, 해당 숫자를 카운트 해준다 int[] count = new int[10]; // X가 가지고 있는 숫자 담을 배열 // X의 숫자 카운트 for (int i = 0; i < X.length(); i++) { char c = X.charAt(i); int n = c - '0'; count[n]++; } 그 후, Y를 한 글자씩 돌면서, 해당 숫자를 X가 가지고 있는지 확인하고 X가 가지고 있다면, 카운트에서 값을 하나 빼준다 이러면 X와 Y가 중복으로 가지고 있는 숫자임을 찾은 셈이므로 중복..
-
백준 1541 잃어버린 괄호 with 자바
https://www.acmicpc.net/problem/1541 풀이 먼저 "-"를 기준으로 문자열을 쪼개 준다 55-50+40의 경우 문자열을 쪼개면 55와 50+40으로 쪼갤 수 있으며 String 배열에 {"55", "50+40"}으로 담을 수 있다 이제, 배열의 0번 인덱스부터 뒤로 가면서 배열의 원소에 있는 수식을 계산하고, 계산한 결과를 빼주면 된다 0번 인덱스인 55에서 다음 원소인 50+40을 계산하고, 계산 결과인 90을 빼주면 된다 더하기만 있는 수식을 계산하는 함수이다 static int sumFormula(String s) { String[] ss = s.split("\\+"); int sum = 0; for (int i = 0; i < ss.length; i++) { sum +=..
-
백준 1043 거짓말 with 자바
https://www.acmicpc.net/problem/1043 풀이 먼저 각 파티에 있는 사람끼리 그래프로 연결하고 각 파티마다 진실을 알고 있는 사람이 있는 경우 해당 파티에 있는 나머지 사람들도 진실을 알고 있다고 상태를 변경한 다음 다시 한번 전체 파티를 돌면서 파티에 진실을 알고 있는 사람이 한 명이라도 있는 경우 전체 파티 개수에서 파티 개수를 빼주면 된다 전역 변수를 다음과 같이 선언해준다 static int N; static int M; static boolean[] visited; // 최종적으로 진실을 알고있는 사람 static Queue knowns; // 처음에 진실을 알고있는 사람 static Input[] inputs; // 받은 입력값 저장 (파티 정보) static Link..
-
백준 2636 치즈 with 자바
https://www.acmicpc.net/problem/2636 풀이 테두리(0,0)에서부터 2차원 배열을 치즈가 다 없어질 때까지 반복적으로 전체 탐색하면 된다 탐색할 때는 4방향 탐색을 하여 치즈가 있는 경우는 해당 위치를 기억하고 탐색이 다 끝나면 해당 위치의 치즈를 삭제해 주면 된다 전역 변수를 선언해 주고 static int N; static int M; static boolean[][] arr;// 2차원 배열 static int totalCount;// 전체 치즈 개수 static int[] di = {-1, 1, 0, 0};// 4방향 탐색에 쓰일 행 인덱스 static int[] dj = {0, 0, 1, -1};// 4방향 탐색에 쓰일 열 인덱스 static boolean[][] vi..
-
백준 5430 AC with 자바
https://www.acmicpc.net/problem/5430 풀이 더블리 링크드 리스트를 학습하기 아주 좋은 예제이다 진짜 그냥 더블리 링크드 리스트 구현해서 풀면 된다 링크드 리스트에 사용할 노드 클래스를 구현해주고 private static class Node { int n; Node pre; Node next; public Node(int n) { this.n = n; } } head와 tail을 선언하고 head와 tail 중 어떤 노드를 가리키는지 표시할 current와 아무것도 없는데 D를 한 경우를 확인하기 위한 에러 플래그를 선언해준다 static Node head; static Node tail; static Node current; static Boolean flag; 숫자 차례대..
최근 인기글
-
순열, 조합, 중복순열, 중복조합을 만드는 방법
순열, 조합, 중복순열, 중복조합을 만들 수 있는 여러가지 방법을 설명하겠다 마지막에는 한가지 방법으로 순열, 조합, 중복순열, 중복조합을 모두 만들 수 있는 방법을 알려주겠다 사용할 배열에는 1 2 3이 저장되어 있는 상태이다 이 배열을 이용하여 3개 중에서 2개를 뽑는 순열, 조합, 중복순열, 중복조합을 생성해보겠다 순열을 만드는 방법 1. 반복을 이용한 순열 가장 쉽게 만들 수 있는 순열이다 2~3개를 뽑는 경우에는 간단하게 사용할 수 있지만 뽑는 수가 많아지면 코드가 더러워(?)진다 static int[] arr = {1, 2, 3}; public static void per() { for (int i = 0; i < 3; i++) { for (int j = 0; j n) 함수를 종료시킨다 sta..
-
스택 - 후위표기식
계산기 문자열로 된 계산식이 주어질 때, 스택을 이용하여 계산식의 값을 계산할 수 있다 중위 표기법의 수식을 스택을 이용하여 후위 표기법으로 바꾼다 후위 표기법의 수식을 스택을 이용하여 계산한다 중위 표기법의 수식을 후위 표기법으로 변환하는 방법 수식을 하나씩 읽는다 수식이 피연산자이면 출력한다 수식이 연산자이면 스택에 push한다 연산자의 우선순위를 따진다 더이상 읽을 수식이 없으면 스택에 있는 연산자를 모두 pop한다 변환 방법의 예 1. 덧셈과 뺄셈의 경우 연산자는 스택에 push, 피연산자는 출력하기 스택에 사칙연산 우선순위가 동등한 연산이 있을 경우 해당 연산을 pop한 후 push하기 중위 표기식이 3+4+5 인 경우의 예 3은 피연산자이므로 출력한다 +는 연산자이므로 push한다 4는 피연산..
-
안드로이드 - Thread [패스트 캠퍼스 챌린지 20일차]
Thread 쓰레드는 작업 흐름으로 기본적으로 MainThread에서 작업이 이루어 진다 MainThread만 있는 경우에는 한번에 하나의 일만 할 수 있다 다른 쓰레드가 있는 경우에는 여러가지 일을 한번에 할 수 있다 안드로이드 MainThread 안드로이드의 MainThread는 UI(User Interface) Thread이며 이는 사용자의 input을 받는 쓰레드이다 UI Thread는 절대 정지시킬 수 없다 정지 시키거나 종료 시키면 더 이상 사용자의 input을 받을수 없기 때문이다 Thread 만들기 쓰레드를 만들어 보자 이제 쓰레드가 할 일을 Runnable담아서 쓰레드에 넣어 주면된다 현재까지는 쓰레드가 할일을 가지고 있는 상태이다 일을 시작하라는 명령 줘야한다 버튼 누를 때마다 쓰레드가..
-
세계최초로 워터폴 스크린 탑재한 Vivo NEX 3
중국 스마트폰 제조사 비보(VIVO)가 새로운 모델을 발표했다. 그 모델은 바로 세계 최초로 워터폴 디스플레이(waterfall display)를 탑재한 Vivo NEX 3이다. 워터폴 디스플레이는 일반적인 엣지 디스플레이보다 측면이 화면으로 더 덮여있으며, 마치 폭포가 흐르는 것처럼 보인다고 해서 워터폴 디스플레이라고 부른다. 스마트폰은 측면 디스플레이 형태에 따라 5가지 단계로 나눌 수 있다. 1단계는 커브드가 없는 평면 스크린, 2단계는 엣지가 있는 커브드 스크린, 3단계는 측면의 50%가 화면으로 덮여있는 워터폴 스크린, 4단계는 측면 아래쪽까지 엣지가 있는 슈퍼 커브드 스크린, 5단계는 기기 전체가 화면으로 덮여있는 서라운드 스크린이다. Vivo NEX 3는 세계 최초로 워터폴 디스플레이를 탑재..