JAVA

    [프로그래머스 Lv2] 방문길이

    [프로그래머스 Lv2] 방문길이

    다른 사람들의 풀이를 보는데 제각기 복잡하긴 해도, 나와 같은 부분에서 고민하고 이름을 짓는 걸 보고 신기해서 기록을 남긴다. 사람 생각하는 거 다 똑같구나 싶어가지고. ※ 내 풀이는 전부를, 다른 사람의 풀이는 일부만 발췌했습니다. 먼저 내가 푼 코드: import java.util.Arrays; import java.util.List; import java.util.ArrayList; class Solution { public static int solution(String dirs) { // 1. 전체 좌표 배열을 만든다: { {0,0}, {0,1}, ... } // -5보다 작아지거나 5보다 커지려고 하는 경우는 그대로 -5와 5로 고정한다. int[][] coords = new int[dirs...

    [프로그래머스 Lv2] 짝지어 제거하기

    [프로그래머스 Lv2] 짝지어 제거하기

    오늘 푼 문제 중 하나를 기록으로 남긴다. 이건 정말 인내심있게 잘 했다, 이정도면 트러블슈팅이라고 봐도 되지 않을까 싶어서 기념으로 풀이를 가져왔다. 처음에 시행 착오를 거쳐 정답이 나오게끔 만들고 나서도 다섯번을 더 풀어서 효율성 테스트(시간 초과인지 아닌지)를 통과해냈다. 그냥 조금씩 손 본 게 아니고 전부 다른 로직으로 풀었다. 풀면서 '당장 낼 모레 코딩테스트를 준비한다는 애가 이러고 삽질하며 시간을 보내고 있구나' 하면서도 자꾸 다른 방법이 떠오르고 한 번만 더 해보면 될 것도 같아서, 무슨 게임 공략하듯 홀려서 시간을 보냈다. 다음은 그 장대한 서사시이다. // 트라이 1: class Solution { public int solution(String s) { if (s == null || ..

    책 [Java의 정석 기초편] CH 2. 변수

    책 [Java의 정석 기초편] CH 2. 변수

    ※ Java의 정석 기초편을 공부하며 기억하고 싶은 특이점들만 기록, 정리해 놓은 노트이다. ※ 노션 페이지를 복사해오다 보니 식과 포맷이 엉성한 곳이 있다. 변수 : 하나의 값을 저장할 수 있는 공간. 저장된 값을 다른 값으로 교체할 수 있다. 상수 : 값을 한 번 저장하면 변경할 수 없는 저장공간. final int MAX_VALUE;와 같이 final 키워드를 붙여주면 된다. 리터럴 : 그 자체로 값을 의미하는 것. 12, ‘A’와 같은 원래의 ‘상수’들을 부르기 위해 따로 만든 용어. 리터럴의 타입과 접미사 변수에 타입이 있는 것처럼 리터럴에도 타입이 있다. 변수의 타입은 저장될 ‘값의 타입(리터럴의 타입)’에 의해 결정되므로, 만일 리터럴에 타입이 없다면 변수의 타입도 필요없을 것이다. 종류 리..

    책 [Java의 정석 기초편] CH 6. 객체 지향 프로그래밍I

    책 [Java의 정석 기초편] CH 6. 객체 지향 프로그래밍I

    ※ Java의 정석 기초편을 공부하며 기억하고 싶은 특이점들만 기록, 정리해 놓은 노트이다. ※ 노션 페이지를 복사해오다 보니 식과 포맷이 엉성한 곳이 있다. 변수의 초기화 : 변수를 선언하고 처음으로 값을 저장하는 것. 멤버변수와 배열은 컴파일러가 초기화를 해주지만, 지역변수는 내가 반드시 초기화를 해주고 사용해야 한다. 각 타입의 기본값(default value)은: 자료형 기본값 boolean false char '\u0000’ byte, short, int 0 long 0L float 0.0f double 0.0d (또는 0.0) 참조형 null 멤버변수의 초기화 법칙 클래스 변수가 인스턴스 변수보다 먼저 초기화된다. 초기화가 덮어씌워지는 순서는:💡 (기본값으로)자동 초기화 → 명시적 초기화 → ..

    배열 ↔ 리스트 형변환 모음

    int[] → Set : int[] nums = {1, 2, 3, 4, 5}가 있을 때, Set set = Arrays.stream(nums).boxed().collect(Collectors.toSet()); Set set = IntStream.of(nums).boxed().collect(Collectors.toSet()); int[] → Integer[] : int[] nums = {1, 2, 3, 4, 5}가 있을 때, Integer[] boxed = IntStream.of(nums).boxed().toArray(Integer[]::new); Integer[] boxed = Arrays.stream(nums).boxed().toArray(Integer[]::new); int[] → HashSet : ..

    [프로그래머스 Lv1] 신고 결과 받기

    [프로그래머스 Lv1] 신고 결과 받기

    08.27.(토) 무작정 작동하게끔만 풀어봤다. import java.util.HashSet; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.ArrayList; class Solution { public int[] solution(String[] id_list, String[] report, int k) { // 0. report에서 중복 제거하기 HashSet report_unique = new HashSet(Arrays.asList(report)); // System.out.println("중복을 제거한 report: " + report_unique); // 1. rep..

    Class literal 이란 용어를 발굴하게 된 사정

    Class 클래스를 찾아 공식 Java 도큐먼트에 들어갔더니 Class라고 소개되고 있다. 그냥 Class 클래스에 대한 페이지도 있나 찾아봤는데 없다. 다들 Class라고 소개하는 클래스는 사실 Class였던 것인가..! Class 클래스에 대하여 Class 클래스가 왜 필요한가? 내가 어떤 car1이라는 이름의 객체를 생성해서 사용하고 있는데, 얘가 속한 클래스의 이름이 뭔지 궁금할 때 쓰인다. 클래스를 동적으로 로딩하거나 디컴파일할 때 쓰이게 된다. Class 클래스의 소속 java.lang.Object java.lang.Class 위계가 이렇게 되어 있다. 즉, Object을 상속받고 lang 패키지에 속함. Class 클래스는 추상 클래스인가? 아니다. Class는 생성자를 감추고 있어서 new..

    왜 Iterator가 clutter라는 걸까?

    자바 documents의 The For-Each loop 페이지를 읽다가 궁금해졌다. 이 페이지에 보면, “the iterator is just clutter”라는 표현이 있다. Iterator가 clutter이니까, for-each 루프를 쓰면 (iterator를 숨기기 때문에) clutter를 방지할 수 있다고. 그래서 clutter가 정확히 뭐라는 걸까 궁금해서 구글링해보았다. 프로그래밍에서 Clutter의 뜻 어디서도 명확한 정의는 찾을 수 없었지만, 이런 용례들을 볼 수 있었다: (아티클의 제목 자체가 용례이다.) “****Comments in Code: How To Avoid Clutter and Make Your Code More Readable”** → 어떻게 코멘트(주석)을 작성해야 바람..

    책 [GOOD JAVA] 정리

    CH 9. 문자열과 메소드 문자열 메소드의 종류 String.charAt(인덱스) String.length() String.startsWith(”문자열”) String.endsWith(”문자열”) String.indexOf(”문자열”) String.lastIndexOf(”문자열”) // 가장 마지막에 나오는 ‘첫글자’의 위치 반환 // 못 찾으면 -1 반환 String.replace(”찾을 문자열”, “덮어씌울 문자열”) String.substring(시작 인텍스, 마지막 인덱스+1) // (0, 4)라면 인덱스 0~3까지 반환 String.split(”구분자 문자열”) String.toUpperCase() String.toLowerCase() String.trim() // 앞뒤 공백 제거 str1.co..