본문 바로가기
Wrapper Class 기본 개념 Java에서 Data type에는 primitive type과 reference type이 있다. 프로그램을 만들다보면, 이 primitive type의 데이터를 reference type으로 처리해야 하는 경우가 있다. 이런 경우를 위해 Java에는 Wrapper class라는 것이 있다. Wrapper class는 이 primitive type의 데이터를 객체로 사용할 수 있게 해준다. Primitive Type Reference Type byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean Boxing/Unboxing과 Auto-boxing/Auto-unboxin.. 2022. 5. 10.
2022 Summer Coding - 여름방학 스타트업 인턴 프로그램 코테 후기 알고리즘/자료구조 3문제, SQL 1문제가 나왔다. (곧 프로그래머스에 문제가 올라올 듯 싶다.) 1번 문제는 처음에 문제 읽고 써내려가다가 생각보다 조건이 조금 까다롭다고 생각이 들었다. 기본적인 틀만 잡아놓고 다른 문제 보고서 마무리 해야겠다고 생각했다. 3번 문제는 조건 자체가 까다롭진 않았다. 흐름이 문제에 자세하게 써있었기 때문에 하나하나 흐름을 잡아갔다. 좀 더 깔끔하게 코드가 정리될 듯 보였지만, 일단은 알고리즘이 맞는지, 적절한 자료구조를 사용했는지부터 확인하고 싶었다. for문으로 묶이지 않아서 일일이 나열하고, 중복된 코드도 더러 있었지만 처음엔 신경쓰지 않았다. 일단 풀어놓고, 다른 문제 보고서 수정하고자 했다. (실제로는 시간이 없어서 그대로... 제출했지만^^) 4번 문제는 SQL.. 2022. 5. 9.
Git과 GitHub 하나의 프로젝트에 여러 사람이 함께 개발하고 있다. 여러 사람이 같이 작업하다보니 같은 파일의 소스를 동시에 수정하는 일이 충분히 발생할 수 있다. 그리고 이전에 작성했던 코드가 현재 필요한 경우도 언제든지 발생할 수 있다. 이렇게 프로젝트 개발에 변경된 소스 코드를 관리하고 추적하기 위해서는 버전 관리 시스템이 필요하다. 버전 관리 시스템은 여러가지가 있지만 가장 많이 사용되는 것은 "Git"이다. "GitHub"는 Git을 이용하여 관리하는 프로젝트의 원격 저장소 역할을 하는 웹 호스팅 서비스이다. Git의 가장 큰 장점 3가지는 다음과 같다. 1. 이력 기록 및 추적 2. 원격 저장소 및 공유 3. 변경 이력 병합 GitHub의 장점은 다음과 같다. 1. 호스팅 서비스 2. public / priv.. 2022. 5. 3.
순위검색 - 프로그래머스 (Java, Level 2) 처음 풀이 간단한 문제라고 생각했다. 하나의 query마다, 모든 지원자들을 비교해가면서 몇 명이 해당하는지 셌다. solution() public int[] solution(String[] info, String[] query) { int[] answer = new int[query.length]; int index = 0; for (String conditions : query) { String[] condition = conditions.replaceAll("and ", "").split(" "); answer[index++] = find(condition[0], condition[1], condition[2], condition[3], condition[4], info); }//for end re.. 2022. 5. 2.
거리두기 확인하기 - 2021 카카오 채용연계형 인턴십 (Java, Level 2) 처음 풀이 1. 한 고사장을 char[][] 배열에 담고, 지원자의 위치를 int[] 형태로 list에 저장한다. 2. 한 고사장 내 모든 지원자들끼리 거리두기가 지켜졌는지 확인한다. - 한 고사장 내에서 한 명이라도 거리두기가 지켜지지 않았으면 0 -> 맨허튼 거리가 1이면 무조건 false, 2이면, 두 지원자 사이가 파티션일 때만 true, 아니면 false고 3이상이면 true다., solution() public void solution(String[][] places) { int[] answer = new int[5]; char[][] map = new char[5][5]; List pLocList = new ArrayList(); for (int i = 0; i < 5; i++) { pLoc.. 2022. 4. 30.
메뉴 리뉴얼 - 프로그래머스 (Java, Level 2) 처음 풀이 1. 모든 주문에 대해 코스요리 메뉴 수에 따른 주문 조합과 그 조합 횟수를 map에 저장한다. -> 주문이 "XYZ", "XWY" 이고, 코스요리 메뉴수가 2개라면, , , 이 저장 된다. -> 주문 조합은 재귀로 구한다. 2. 저장된 map에서 횟수가 2이상이면서 가장 큰 주문 조합을 list에 저장한다. 3. 모든 코스요리 메뉴 수에서 같은 작업을 한다. 4. list를 알파벳 순으로 정렬하고, 배열로 옮긴다. solution() //메뉴 수에 맞는 메뉴 조합과 주문 횟수 저장할 map Map menuListMap; public String[] solution(String[] orders, int[] course) { List answerList = new ArrayList(); menu.. 2022. 4. 29.
빛의 경로 사이클 - 월간 코드 챌린지 시즌3 (Java, Level 2) 처음 풀이 1. grid를 각 격자별로 나눠서 2차원 배열에 저장한다.(map), 격자 1개당 up, right, down, left 시계 방향에 대한 정보를 담을 3차원 배열을 만든다. 2. 현재 이동방향과 격자에 따라 이동하면서 재귀적으로 경로 길이를 저장하는 메소드를 만든다. (move) - 재귀중단조건은 현재 이동하는 경로에 저장된 값이 0이 아닌 경우이다. 이미 지나간 경로이기 때문이다. - 재귀중단조건을 만났다는 건 하나의 순환 경로가 만들어진 것이므로 현재까지 이동거리를 list에 저장한다. 3. 현재 이동방향과 도착할 다음 격자에 따라 다음 이동방향을 결정하는 메소드를 만든다. (changeDir) - "S"면 방향 그대로, "L"이면 반 시계 방향이므로 현재 direction index에.. 2022. 4. 26.
부트캠프에 참가한다. 4월 25일부터 10월 19일까지 약 6개월 간 진행되는 Code States BootCamp(이하 코스부캠)이 시작됐다. 4년 전에 처음 학원에 등록해 개발 공부했던 때가 생각난다. 그때와는 다르게 모든 과정이 온라인으로 이뤄진다. 그렇다 보니 한 기수 인원도 거의 4~5배가 된다. 온라인 과정은 처음이라 카메라 켜고 앉아 있는 게 아직은 좀 어색하다. 차차 적응해나가지 않을까 싶다. 개발 공부를 다시 하기로 결심하면서, 전에 공부했던 과정을 돌이켜보고 아쉬웠던 점을 고민해봤다. 1. 자료구조 / 알고리즘을 비롯한 CS 공부를 하지 않았다. 개발 공부 자체가 처음이다 보니 수업도 열심히 듣고, 복습도 여러 번하고, 부족한 부분은 동기들에게 물어보면서 수업을 따라갔다. 사실 그 때는 이렇게 수업 열심히 .. 2022. 4. 26.
소수찾기 - 프로그래머스 (Java, Level 2) 처음 풀이 dfs로 숫자들을 배열한다. 숫자 배열하는 중간중간 소수인지 확인하고 소수면 Set에 저장한다. 최종적으로 Set의 size를 리턴한다. 1. solution() 전역 변수들 초기화 Set primeSet; String[] numStrArr; boolean[] isUsed; StringBuilder sb; public int solution(String numbers) { int totalLength = numbers.length(); primeSet = new HashSet(); numStrArr = new String[totalLength]; isUsed = new boolean[totalLength]; sb = new StringBuilder(); for (int i = 0; i < to.. 2022. 4. 10.
줄 서는 방법 - 프로그래머스 (Java, Level 3) 전체적인 흐름 - k번째의 수를 구할 때, 현재 자리에서 숫자 1개당 나올 수 있는 배열 수 (criteria 변수)를 구한다. - 남은 k번째와 criteria를 나눈 값의 올림값이 현재 자리에서 몇 번째 그룹에 속하는지, 즉, 남은 숫자들 중 몇 번째 숫자가 와야하는지 알려준다. - k를 현재 자리의 criteria를 나눈 나머지 값으로 세팅한다. 즉, 현재 자리에서, 속한 그룹의 직전 그룹까지의 배열의 수를 빼주는 것이다. - 이 과정이 k==0이 될 때까지 반복한다. public int[] solution(int n, long k) { //1~n까지 담을 list List numList = new ArrayList(); //index와 수를 맞추기 위해 index 0 채움 numList.add(0.. 2022. 4. 8.