블로그 최신 글
-
프로그래머스 숫자 짝꿍 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; 숫자 차례대..
최근 인기글
-
백준 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..
-
백준 7662 이중 우선순위 큐 with 자바
https://www.acmicpc.net/problem/7662 풀이 문제 제목이 우선순위 큐라고 해서 진짜 우선순위 큐로 풀면 안 된다 이 문제는 기본적인 자료구조를 잘 알고 있는지 묻는 문제이다 특히 Tree에 관한 자료구조를 잘 알고 있어야 한다 필자는 TreeMap을 이용하여 문제를 풀었다 똑같은 숫자를 여러 개 저장하는 경우도 있으므로 숫자의 카운트를 위해 TreeSet보다는 TreeMap을 사용하였다 물론 TreeSet을 사용하는 경우, 해당 숫자의 개수를 별도로 카운트해주면 문제를 풀 수 있긴 할 것이다 하지만 숫자의 범위가 너무 넓으므로, 각 숫자의 개수를 따로 카운트해주는 것은 별로인 듯하다 입력 받는 숫자의 범위가 32비트 정수이므로 숫자를 저장할 key는 long형으로, 해당 숫자의..
-
코틀린 - 메소드 [패스트 캠퍼스 챌린지 02일차]
함수 선언 함수를 만드는 방법은 다음과 같다 fun 함수명 (변수명: 타입 ...) : 반환형 {} 두 인자를 받아서 더한 값을 반환해주는 함수를 한번 만들어 보았다 함수 호출 위에서 만든 plus 함수를 호출해 보겠다 차례대로 인자를 전달해도 되고 명시적으로 인자를 전달해 된다 디폴트 값을 갖는 함수 다음은 디폴트 값을 갖는 함수이다 second에 파라미터에 디폴트 값을 설정해 주었다 인자를 다 전달했을 때는 전달된 값을 이용하여 함수가 작동하고 디폴트 값을 갖고 있는 파라미터에 값을 전달하지 않았을 때는 디폴트 값을 이용하여 함수가 작동된다 인자를 다 전달하여 함수를 호출해보고 인자를 하나만 전달하여 함수를 호출해 보았다 반환 값이 없는 함수 반환 값으로 Unit을 주면 된다 참고로 Unit은 생략할..
-
시간복잡도 분할 상환 분석(동적 배열의 추가 연산)
동적 배열의 추가(append) 연산 동적 배열의 추가 연산의 시간 복잡도를 계산해보자 다음과 같은 배열에 새로운 데이터를 추가한다고 하자 두 가지 경우에 대해서 생각해 볼 수 있다 1. 배열에 남는 공간이 있을 때 이 경우는 그냥 빈 공간에 데이터를 저장하면 되므로 시간 복잡도는 O(1)이다 2. 배열이 꽉 찼을 때 이 경우는 기존의 배열보다 큰 배열을 만들고 기존 배열에서 새로운 배열로 값을 다 복사해야 된다 기존 배열의 0번 인덱스에 접근해서 값을 복사하고 새 배열의 0번 인덱스에 접근해서 값을 붙여 넣고... 이미 있던 n개의 데이터를 복사해야 되므로 O(n)이 되고 새로운 데이터를 추가해야 되므로 O(1)이 되어 총 O(n+1) = O(n)이 된다 정리 배열에 남는 공간이 있을 때: O(1) 배..
-
마이크로소프트가 개발중인 액체 힌지
마이크로소프트(Microsoft)는 디스플레이 자체를 이용한 복잡하고 인상적인 힌지 개발에 주력해 왔으며, 액체를 이용한 특수 힌지를 개발하고 있는 것으로 밝혀졌다. 플렉시블 디스플레이 내부에 들어있는 액체가 힌지 역할을 하여, 이 액체 힌지를 이용하여 화면을 접을 수 있는 방식이다. 삼성 갤럭시 폴드가 초기에 힌지 부분에 이물질이 생기는 문제가 있었다. 마이크로소프트는 이와 같은 현상을 피하기 위해, 힌지 내부에 이물질이 들어가는 것을 방지하도록 복잡한 힌지 조립 장치(assembly)를 사용하였다. 또한, 내부에 액체가 있기 때문에, 디스플레이를 접었다 펼 때 디스플레이에 가해지는 충격을 줄일 수 있다. Microsoft technology licensing에서 특허를 출원했기 때문에, 이 기술을 다..