본문 바로가기

알고리즘15

2022.07.07 [Lv.2 괄호 변환] https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드.. 2022. 7. 7.
2022.06.27 「LV.2 하노이의 탑」 여느 때와 같이 프로그래머스에서 문제를 풀고 있었다. 자료구조, 알고리즘 고득점 kit를 어느 정도 풀었기 때문에, 특별한 기준을 두고 문제를 고르진 않는다. 문제들을 보다가 하노이의 탑이라는 문제가 눈에 띄었다. 워낙에 재귀 함수를 이용한 풀이로 유명하지만 실제로 한 번도 풀어본 경험이 없었다. 그래서 한번 풀어보기로 결심했다. 근데 이게 웬걸. 생각보다 내가 재귀에 대한 개념이 부족하다는 걸 느끼면서 푸는 시간과 이해하는 시간이 거의 3일은 걸렸던 것 같다. 프로그래머스에서 같은 레벨이라도 난이도는 천차만별인듯하다. 당장에 카카오 기출만 보더라도...(기준이 뭘까..) 어찌 됐든 겨우 이해해서 그 풀이과정을 기술해볼 생각이다. https://programmers.co.kr/learn/courses/3.. 2022. 6. 27.
2022.06.22 「Lv.2 Jadan Case」 https://programmers.co.kr/learn/courses/30/lessons/12951 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고 programmers.co.kr 문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고) 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세.. 2022. 6. 22.
2022.06.22 「Lv.2 N-Queen」 이번 주는 코딩 테스트 연습에 더 박차를 가해볼 계획을 짰다. 다음 주에 모의 테스트를 볼 계획이므로 비중을 좀 더 둬봐야겠다. 이번 기회에 자료구조 한번 더 정리해볼 계획도 구상했다. https://programmers.co.kr/learn/courses/30/lessons/12952 코딩테스트 연습 - N-Queen 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 programmers.co.kr 문제 설명 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경.. 2022. 6. 22.
2022.06.15 「Lv.2 오픈채팅방」 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 오픈 채팅방 카카오톡 오픈 채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김 크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리 자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네.. 2022. 6. 15.
2022.06.14 「Lv.2 멀쩡한 사각형」 문제 설명 가로길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자 칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군가가 이 종이를 대각선 꼭짓점 2개를 잇는 방향으로 잘라 놓았습니다. 그러므로 현재 직사각형 종이는 크기가 같은 직각삼각형 2개로 나누어진 상태입니다. 새로운 종이를 구할 수 없는 상태이기 때문에, 이 종이에서 원래 종이의 가로, 세로 방향과 평행하게 1cm × 1cm로 잘라 사용할 수 있는 만큼만 사용하기로 하였습니다. 가로의 길이 W와 세로의 길이 H가 주어질 때, 사용할 수 있는 정사각형의 개수를 구하는 solutio.. 2022. 6. 14.
2022.06.08 「Lv.2 문자열 압축」 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 .. 2022. 6. 8.
2022.05.31 「Lv.3 디스크 컨트롤러」 오랜만에 코테 문제를 풀어보았다. 힙 자료구조를 이용한 문제인데, 주로 우선순위 큐를 이용해 문제를 풀면 된다는 것을 배웠다. 프로젝트 때문에 시간이 거의 안 나는데 짬짬히 푸려고 노력을 좀 해야겠다. 풀이 과정을 설명하겠다. 문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 제한 사항 jobs의 길이는 1 이상 500 이하입니다. jobs의 각 행은 하나의 작업에 대한 [작업이 요청되는 시점, 작업의 소요시간] 입니다. 각 작업에 대해 작업이 요청되는 시간은 0 이상 1,000 이하입니다. 각 작업에 대해 작업의 소요시간은 1 이상 1,000 이하입니다. 하드디스크.. 2022. 5. 31.
2022.05.24 「Lv.3 입국심사」 요새 프로젝트 비중이 너무 컸던지라 오랜만에 시간이 나서 코테 문제를 풀었다. 자료구조 중에서 이분 탐색 (Binary Search)을 이용한 문제이다. 얼핏 보니까 출제율이 낮던데 그래도 이론 상 알고 가는 게 아니라 직접 문제를 풀어보아야겠다는 생각이 들어 문제를 풀고 정리를 해보겠다. 이분 탐색 (Binary Search) 이분 탐색 알고리즘이란 최소, 최대 값을 정해 두고 반으로 나누어 가며 중간 값을 검사하며 탐색을 하는 알고리즘이다. 시간 복잡도로 O(logN)을 갖고 있는 탐색 알고리즘이다. https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있.. 2022. 5. 24.
2022.05.18 「Lv.2 Heap 더 맵게」 자료구조 정리해야지 계획만 하고 눈으로만 개념들을 보고 정리하고 있다.. 눈으로 읽고 코드 작성해봐도 어느 정도는 감이 오는 것 같지만 빠른 시일 내에 정리 좀 해야겠다 정말 오늘은 오전에 Heap을 이용한 문제를 풀었다. Lv2이다. 예전에는 Lv1도 어려웠고, 문제 자체도 이해가 안 되었는데 풀다 보니 좀 감이 오는 듯하다..?? 두 달 안에 Lv3까지 마스터 목표를 잡자. 취업하고 싶다!! Heap이란 자료구조는 완전 이진트리와 거의 비슷한데 예전에 잠깐 이진 트리에 대해서 개념을 본 기억이 있었는데 개념을 먼저 보고 문제를 풀었다. 결국 Heap이 우선순위 Queue (PriorityQueue)를 구현하기 위해 Heap을 이용하는 건데 그와 비슷한 문제이므로 이를 이용하여 문제를 풀었다. 문제 설.. 2022. 5. 18.
2022.05.12 「LV2 소수 찾기」 여느 날처럼 코테 문제를 계속 풀고 있다. 자료구조도 날 잡아서 한번 정리해야 되는데 시간이 좀 나질 않는다. 시간 배분 좀 잘해보자. 어제오늘 푼 것이 소수 찾기라는 완전 탐색 문제인데, 이건 소수라는 것이 결국 1과 자신만을 약수로 가지는 수를 말한다. 어떤 블로그에서 봤는데 결국 문제를 간소화하는 게 관건이라는데 그것을 보는 안목을 좀 길러야겠다. 소수 찾기 소수 : 1과 자기 자신만을 약수로 가지는 수 String 숫자 값을 받아 소수를 조합하는 개수를 구하는 문제이다. import java.util.HashSet; import java.util.Iterator; class Solution { HashSet numberSet = new HashSet(); /** * 소수 확인 메서드 * @para.. 2022. 5. 12.
2022.04.28 「Thymeleaf 설정」 ▶ 파트 1 (10시30분 ~ 5시30분) 1. 로지텍 마우스 구매 2. 알고리즘 정렬 Level2 3. mysql CH.9 4. 위키 수정 5. 스프링부트 프로젝트 진행 ▶ 파트 2 (9시30분 ~ 12시) 1. 스프링부트 프로젝트 진행 => 알바 갔다 와서 경로 좀 손 보고 html도 좀 넣고 하자 ▶ 문제 1. view 디자인 문제 문제점: Thymeleaf 엔진을 사용하는데 여기는 jsp에서 사용하는 tiles를 사용하지 못한다. 해결 : - Thymeleaf가 제공하는 layout 라이브러리를 사용해서 적용 가능하다. - Thymeleaf 관련 resolver properties 파일 정의함 2. resources 폴더 아키텍쳐 관련 문제점 : 스프링부트에서 view 관련 아키텍쳐 설계가 처음이.. 2022. 4. 28.
2022.04.24의 기록 ▶ 해야할 일 1. Gradle test code 수정 2. mysql CH7. 데이터 암호화 정리, CH8. 인덱스 중간 3. Boot 프로젝트 구상 (점심 먹고 쏟아붇자) https://github.com/GroovyArea/Shop-with-SpringBoot/wiki 4. 알고리즘 1문제 ▷ 테스트 코드 문제 1 : gameCount()를 호출 할 때마다 예외가 발생됨 해결 : 제어문을 통해 해결 문제 2 : @ParameterizedTest 진행 시 파라미터를 메서드의 매개변수로 집어넣어주지 않아 테스트 코드 문제 발생 2022. 4. 24.
2022.04.22의 기록 ▶ 파트 1 (10시 ~ 7시) 1. Gradle Test 코드 수정 (PrintGameResult, ComputerNumber 부분) 2. 자소서 수정 3. Boot project 구상 4. Spring MVC 내부 개념 정리 5. 알고리즘 1문제 (2문제) 6. mysql Ch5. 트랜잭션, CH6. 데이터 압축 7. 이펙티브 자바 아이템 1 정리 ▷ 알고리즘 문제 : 정수의 내림차순 정렬 import java.util.Arrays; class Solution { public long solution(long n) { long answer = 0; String number = String.valueOf(n); String stringNum = ""; char[] numArr = new char[num.. 2022. 4. 22.
2022.04.21의 기록 ▶ 파트 1 (1시 ~ 8시) 1. Gradle Test 코드 수정 (테스트 코드 목적에 맞게) 2. 노션 이력서 3. Boot Project Wiki 4. Spring MVC 내부 개념 정리 ▶ 파트 2 (9시 ~ 2시) 1. 알고리즘 1문제 (꽂혀서 4문제 품) 2. Mysql CH4. 아키텍쳐 ▷ 알고리즘 > 문제점 : 코드실행은 정상적인데 채점에서 실패한다. > 새로 알게 된 사실 : 문제를 풀 때 메모리와 걸리는 시간도 체크하는 것 같다.. > 문제 : 배열 중 제일 작은 수 제거하고 없다면 -1을 반환 > 내가 처음 푼 방식 : 배열은 인덱스를 지우는 방식이 없으므로 List로 만들어서 내림차순 정렬 후 제거하고 다시 오름차순으로 했다. 완전 절차지향식 > sort는 되도록 삼가하는 것이 좋덴.. 2022. 4. 21.
반응형