본문 바로가기

Algorithm

(28)
프로그래머스 오픈채팅방 JAVA Link https://programmers.co.kr/learn/courses/30/lessons/42888 Review 간단한 구현 문제 Source package programmers.kakao_blind_2019; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class _1번_오픈채팅방 { static final String ENTER = "Enter"; static final String LEAVE = "Leave"; static final String ENTER_FORMAT = "%s님이 들어왔습니다."; static final String LEAVE..
프로그래머스 표편집 JAVA 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 적절하게 자료구조를 잘 활용해서, 푸는 문제. 시간복잡도를 잘 고려하면서 풀어야 한다. 소스 코드 package programmers.kakao_internship_2021; import java.util.Stack; public class _3번_표_편집 { public String solution(int n, int k, String[] cmd) { Stack removed = new Stack(); int ..
프로그래머스 2018 KAKAO BLIND 방금그곡 ( 문자열 ) JAVA 프로그래머스 2018 KAKAO BLIND 방금그곡 ( 문자열 ) JAVA 풀이 구현 문제이다. 핵심은 C#,F#과 같은 부분인데 이 부분은 예외처리를 쉽게 하기 위해 replaceAll을 이용하여 다른 값으로 바꿔줘서 해결했다. programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 소스 코드 import java.util.*; class Solution { public String solution(String m,..
알고리즘 문제 풀 때 자주하는 for문에서의 실수😅 ( JAVA ) 음, 제목 그래도 알고리즘 문제를 풀 때, 가장 많이 하는 실수인 ArrayIndexOutOfBoundsException 예외에 대해서 오늘은 가볍게 정리하고 넘어가려 한다. 알고리즘 문제를 풀 때면, ArrayIndexOutOfBoundsException 이 예외를 정말 많이 만나고는 한다. 요즘 있는 코딩테스트의 경우 디버깅을 하기 어려운 경우가 많기 때문에, ( 특히 프로그래머스에서 할 때 ) 해당 예외가 뜨면 디버깅이 불가하다. 즉, 처음에 풀 때 잘 풀어야 된다는 뜻! 이 에러가 뜨는 것은 사실 대부분 for문을 정확히 이해하고 있지 못해서인 이유가 많을 것으로 생각된다. ( 필자도 그러했다.. ;; ) 정말 간단한 것인데, 너무 기본이라 간과하고 넘어가는 경우가 많은 것 같다. 자, 이 그림 ..
플로이드 와샬 알고리즘 최단 경로를 구하는 알고리즘이다. 다익스트라 알고리즘과 비교하면 좋은데, 다익스트라 알고리즘의 경우에는 하나의 정점에서 출발했을 때, 다른 모든 정점으로의 최단 경로를 구하는 알고리즘이다. 하지만, 만약 모든 정점에서 모든 정점으로의 최단 경로를 구한다면, 즉, 1 : N 이 아니라 N : N 의 최단 경로를 구할 때는 플로이드 와샬 알고리즘을 쓴다는 것이다. 다익스트라 알고리즘은 가장 적은 비용을 하나씩 선택해야 했다면, 플로이드 와샬 알고리즘은 ' 거쳐가는 정점 ' 을 기준으로 알고리즘을 수행한다. 기본적으로 다이나믹 프로그래밍에 의거한다. 시간 복잡도는 O(V^3)이다. 즉, 특별한 경우가 아닌 이상 쓸일은 잘 없겠다.
BOJ 14503번 로봇청소기 ( 구현 , DFS ) JAVA BOJ 14503번 로봇청소기 ( 구현 , DFS ) JAVA 풀이 로봇 청소기가 청소한 곳을 못지나간다는 것으로 착각해서 해결하는데 시간이 좀 많이 들었던 것 같다. 지문을 읽는 것이 역시 젤 어렵다.. 앞으로는 문제를 잘 읽어보잣!😀 링크 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 소스 코드 package boj; import java.util.Scanner; public class Boj14503 { static int n, m; ..
프로그래머스 광고 삽입 KAKAO BLIND 2021 ( 누적 합 ) JAVA 프로그래머스 광고 삽입 KAKAO BLIND 2021 ( 누적 합 ) JAVA 풀이 풀이를 생각해내는 게 쉽지 않았다. 결국에는 다른 사람의 풀이를 참고하고 누적합 문제라는 것을 인지할 수 있었다. 앞으로 비슷한 유형은 누적합으로 풀이를 시도해보면 좋을 것 같다. programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 소스 코드 package kakao.bli..
프로그래머스 KAKAO BLIND 2020 가사 검색 LEVEL4 ( 트라이 ) JAVA 프로그래머스 KAKAO BLIND 2020 가사 검색 LEVEL4 ( 트라이 ) JAVA 풀이 트라이 자료구조를 통해서 해결해야 하는 문제다. queries 마다 문자열 길이 별로 Trie배열에 저장해주는 식으로 문제를 해결한다. 소스 코드 package kakao; public class LyricSearch2020 { public static void main(String[] args) { String[] words={"frodo","front","frost","frozen","frame","kakao"}; String[] queries={"fro??","????o","fr???","fro???","pro?"}; solution(words,queries); } public static final in..