Algorithm 306

[2018 카카오 블라인드 1차]프렌즈4블록

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 💡 접근 2X2 형태로 블록이 이어져있으면 지워주면 되는데 중복되는 값을 고려해야했다. 블록이 지워지지 않을 때 까지 모든 지점을 탐색해서 2X2인 부분을 방문처리 해놓고 블록을 아래로 떨어뜨리면서 카운트를 해주는 방식으로 구현하면 됐다. 👩‍💻 코드 import java.io.*; import java.util.*; pub..

[2019 카카오 인턴십]튜플

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 💡 접근 문자열 길이 기준으로 정렬해서 list에 넣으면 되는 문제였다. HashSet을 사용하려다가 데이터 순서가 안 맞아서 ArrayList로 풀었는데 데이터 입력 순서 보장해주는 LinkedHashSet 사용하면 된다! 👩‍💻 코드 import java.util.*; class Solutio..

[2021 카카오 인턴십]거리두기 확인하기

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 💡 접근 거리 1부터2까지 다른 응시자를 만나게 되면 거리두기가 안되고 있는..

[2018 카카오 블라인드 1차]뉴스 클러스터링

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 💡 접근 중복을 허용하는 다중 집합에 대해서 생각해봐야 하는 문제였다. 두 개의 리스트에서 겹치는 부분은 교집합으로 따로 만들어두고 해당 원소를 삭제하면 두 개의 리스트에 남는 집합들이 합집합의 원소들이 된다. 👩‍💻 코드 import java.io.*; import java.util.*; public class Solutio..

[2021 카카오 블라인드]메뉴 리뉴얼

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/72411?language=java 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 💡 접근 손님별 2개 이상의 모든 단품 메뉴 조합을 만들어야 했다. 그리고 그 만든 조합 기준으로 value값 기준으로 리스트를 내림차순 정렬해야했다. 그래야 코스요리 메뉴 구성에 들어갈 리스트에 잘못된 값이 들어가지 않는다! 리스트에 해쉬맵의 키들을 담아서 해쉬맵에 담긴 value 값을 기준으로 내림 차순 정렬하는 방법에 ..

시간복잡도와 공간복잡도

시간복잡도 시간복잡도란 알고리즘을 수행하는 데에 연산들이 몇 번 이루어지는지 표기하는 것입니다. 알고리즘이 복잡해질수록 평균적인 경우는 구하기가 매우 어렵기에 시간복잡도의 척도를 계산할 때는 최악의 경우(빅 오 표기법)를 주로 사용합니다. O(1) - 입력 크기에 상관없이 일정한 연산을 수행하면 시간복잡도는 O(1)입니다. void func (int n) { printf("%d\n", n); } O(logN) - 연산횟수가 logN에 비례해서 증가하면 시간복잡도는 O(logN)입니다.(이진 탐색) for(i=1; i

Algorithm 2022.03.28

Longest Palindromic Substring

📍 문제 설명 https://leetcode.com/problems/longest-palindromic-substring/ Longest Palindromic Substring - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 💡 접근 하나의 지점에서 확장해나가는 방식으로 구현한다 단, 2글자에서 시작하여 확장하는 것도 고려해야한다. 👩‍💻 코드 import java.io.*; import java.util.*; public class Solution { pri..

Algorithm/leetcode 2022.03.22

Longest Substring Without Repeating Characters

📍 문제 설명 https://leetcode.com/problems/longest-substring-without-repeating-characters/ Longest Substring Without Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 💡 접근 해쉬맵을 이용하는데 문자와 해당 문자가 나타난 인덱스를 저장하여서 풀이 👩‍💻 코드 import java.io.*; import java.util.*; public cl..

Algorithm/leetcode 2022.03.22