목록전체 글 (192)
Lewis's Tech Keep
링크 : https://www.acmicpc.net/problem/20300 - 풀이는 좋은 글의 도움을 받았다. (https://giiro.tistory.com/entry/%EB%B0%B1%EC%A4%80-20300-%EC%84%9C%EA%B0%95%EA%B7%BC%EC%9C%A1%EB%A7%A8) - 최대값의 최소값을 구하는 문제 - 운동기구로 2번만 조지기(?) 때문에 오름차순 정렬 후 끝에서 부터 "최대값 + 최소값" 의 최대값을 구하면 해당 값의 최소값이 나오게 된다. - 그리고 범위가 10^18 이므로 int로 감당할 수 없는 범위임을 인식할 것. 더보기 import java.util.Arrays; import java.util.Scanner; class Solution { public sta..
https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net - 완전탐색 문제 - 제일 큰 값이 1,000,000 밖에 되지 않기 때문에 시간 초과 걱정이 없음. 더보기 import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int..
- bfs로 풀어보려고 했으나 테케는 다 통과하는데 답은 빠르게 no를 뱉는다. - 예외 상황 커버가 더 필요한 듯 보입니다. - 본질적으로는 구현 문제 같아서 완성된 코드 참고만 하고 넘어감. 더보기 import java.util.*; class Point { int x; int y; char c; int d; // 0: 시작 1: 하 2: 좌 3: 우 int curveCount; public Point(int x, int y, char c, int d, int curveCount) { this.x = x; this.y = y; this.c = c; this.d = d; this.curveCount = curveCount; } public char getC() { return c; } public vo..
- 보통은 4가지 특성 - 문헌에 따라 3가지 또는 7가지로 나누기도 함 중요한 3가지 - 캡슐화 (encapsulation) : 데이터 & 데이터에 작용하는 메서드를 하나로 묶는 것 : 정보 숨기기 (data hiding): 개체 안에 있는 데이터를 외부로 부터 보호 - 상속 (inheritance) : 이미 존재하는 개체를 기반으로 확장 -> 진화와 같음 새로운 개체는 상속되는 개체의 모든 것을 이어받는 존재 : 코드 중복을 막는다, 사람은 점진적 개념일 때 가장 효율적이다 - 다형성(polymorphism) : 같은 지시를 내렸지만 다른 종류의 개체가 동작을 달리하는 것 (overriding) : 함수 구현이 실행될 지는 실행 중에 결정 된다 = 늦은 바인딩 (late binding) [ early..
- 생성자가 생성됨과 동시에 유효한 상태임을 보장해야 한다. - 해당 사항이 지켜지지 않을 경우 : 1. 중복 생길 우려가 크다. 2. 기능 추가 시 여러 군데에 추가해야 할 가능성이 있다. 3. 수정 시 대응하기 어려워 질 가능성이 크다. - private 메서드 내에서 같은 클래스에 속한 개체는 private 멤버에 접근 가능! public class A() { private int a; private void method(A a) { A.a += 1; // 됨. this.a = 100; // 됨. } }
- 참고 : programmers.co.kr/learn/courses/30/lessons/49189?language=java 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr - bfs 문제 - bfs를 돌고 각 지점까지의 최단 거리를 계산하고 해당 값의 최대값 갯수를 세면 된다. 더보기 import java.util.*; import java.util.*; class Solution { public int solution(int n, int[][] edge) { int[] d = new int[n+1]; boolean[] visited = new boolean[n+1]; Arra..
- 참고 : programmers.co.kr/learn/courses/30/lessons/1832?language=java 코딩테스트 연습 - 보행자 천국 3 3 [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 6 3 6 [[0, 2, 0, 0, 0, 2], [0, 0, 2, 0, 1, 0], [1, 0, 0, 2, 2, 0]] 2 programmers.co.kr - dp 문제 - bfs로 풀려고 했으나 m과 n이 500 이므로 n(500!)의 경우 시간 초과 - dp로 접근하는 것이 현명한 선택이었다. - 1-indexed 로 접근하는 것이 for구문이 한방에 풀리기 때문에 더 현명한 선택이었다. (0-indexed 의 경우 첫 행, 첫 열을 따로 초기화 해주어야 함) - 0일 경우 - d..
자바에서 String 비교를 할 때 문자열 비교라면 그냥 맹목적으로 equals를 써야 한다고 생각했다. == 비교는 주소를 비교하는 것이라 같은 String 일 지라도 다른 주소에 저장되어 있을 수 있기 때문이다. 하지만 왜 그런지 궁금했다. Ex) String a = "hi"; String b = "hi"; 를 하고 a == b 는 true Ex2) String a = "hi"; String b = new String("hi"); 를 하고 a == b 는 false ex1과 ex2가 다른 답을 뱉어내는 이유는 다른 주소에 저장 되어 있기 때문 but 여기서 ex1 은 왜 정답일지 생각해본 적이 없었다. 어떻게 그냥 알아서 a와 b가 같은 주소가 되었을까? (참고로 타 언어에서 a == b 가 문자열 ..