Java 144

[프로그래머스]스킬트리 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 쉬운 문제임! 순서를 유지하면 비교해야 하는데 배열을 이용할 수도 있을 것 같았음! 근데 나는 큐로 하나씩 빼서 비교함 비교하려는 스킬이 큐의 맨처음이 아닌데 큐에 포함되어 있으면 순서가 맞지 않는 것! 자세한건 주석으로! 코드 // 코딩테스트 연습 - Summer/Winter Coding(~2018) - 스킬트리 // https://programmers.co.kr/learn/courses/30/lessons/49993 package PROGRAMMERS.level2; import java.util.LinkedList; import ..

[프로그래머스]튜플 - Java

문제 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 풀이 문자열이 주어지는 규칙?을 잘 보고 필요한 원소들로 어떻게 잘 나눌 것인지를 고민해봐야 한다! String 배열을 String.length()의 오름차순으로 정렬해서 비교하고 넣어주면 순서에 맞게 들어간다 여기서 어떻게 String.length()의 오름차순으로 정렬하냐!!!!!!!!!! // Str..

[프로그래머스]타겟 넘버 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 풀이 쉬운 DFS 문제 재귀를 이용해서 해결했음! 항상 다음 단계를 가기 전에 뭔가를 계산했으면 그 단계를 해결하고 나면 다시 돌려 놓기!! 자세한건 주석으로! 코드 // 코딩테스트 연습 - 깊이/너비 우선 탐색(DFS/BFS) - 타겟 넘버 // https://programmers.co.kr/learn/courses/30/lesso..

[백준]1261번 알고스팟 - Java

문제 https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 풀이 최소한으로 부술 수 있는 벽의 개수를 구해야 하는 문제이다. 문제를 읽자마자 최소 비용(벽의 개수) 문제라는 것을 알아서 다익스트라 알고리즘이 떠올랐다. 전에 풀었던 https://seokmimmmmmmmm.tistory.com/84 [백준]4485번 녹색 옷 입은 애가 젤다지? - Java 문제 https://www.acmicpc.net/problem/4485 4..

[프로그래머스]더 맵게 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 문제를 읽자마자 우선 순위 큐가 생각나서 그걸 이용해서 풀었음! 쉬운 문제임 코드 // 코딩테스트 연습 - 힙 - 더 맵게 // https://programmers.co.kr/learn/courses/30/lessons/42626 package PROGRAMMERS.level2; import java.util.PriorityQueue; p..

[프로그래머스]구명보트 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 풀이 배열에서 인덱스와 포문의 범위를 잘 설정해서 풀면 됨 예제 1번의 배열을 sort하면 이렇게 된다. for문을 시작할 때 인덱스와 for문의 i의 위치를 그림으로 나타내면 위의 그림처럼 나타난다. 가장 가벼운 사람과 가장 무거운 사람을 보트에 태워보고 가능하면 인덱스를 한칸 오른쪽으로, i를 한칸 왼쪽으로 이동하고 answer를 1 증가시켜..

[백준]1347번 미로 만들기 - Java

문제 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 풀이 처음에 연산자 뿐만 아니라 숫자들도 다 자리를 바꿀 수 있는 줄 알고 대략적으로 시간 복잡도를 계산하고 있었는데 너무 어마무시하게 나와서 헤맸다,,, 근데 다시 읽어보니까 숫자는 고정이고 연산자만 위치를 바꾸면 되는 문제였다... ㅎㅎㅎ 나새끼 문제 좀 잘 읽자 완전 탐색으로 다 돌려보면서 탈출 조건(index == N)이 되면 최..

[백준]1347번 미로 만들기 - Java

문제 https://www.acmicpc.net/problem/1347 1347번: 미로 만들기 홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍 www.acmicpc.net 풀이 지금까지 풀었던 문제들은 미로라면 미로, 지도라면 지도가 주어지고 그 미로나 지도 위에서 찾고자하는 무언가를 찾는 방식이였는데 이 문제는 이동한 칸이 먼저 나오고 미로의 모양을 출력해야 되는 문제라 신박했다. 포인트는 제한사항에서 홍준이가 적은 내용의 길이가 0보다 크고 50보다 작다고 적혀있어서 미리 미로의 최대 크기를 정해놓고 접근해야 함 지도의 시작점과 끝점을 이동할 때마다 최신..

[백준]9375번 패션왕 신해빈 - Java

문제 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 풀이 프로그래머스에서도 비슷한 문제를 풀었던 것 같다! 포인트는 맵을 이용해서 같은 종류의 옷이면 갯수를 증가시켜주어야 한다는 것 (HashMap.put(key, HashMap.getOrDefault(key, 0) + 1) 얘를 잘 알아놓자!) 마지막에 옷의 종류가 한가지일 경우와 한가지 이상일 경우..

[프로그래머스]숫자 문자열과 영단어 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 풀이 레벨 1 쉬운 문제 String.replace() 함수를 이용해서 문자를 숫자로 바꿔주었음! 코드 // 2021 카카오 채용연계형 인턴십 - 숫자 문자열과 영단어 // https://programmers.co.kr/learn/courses/30/lessons/81301 package PROGRAMMERS.level1; public class..

[프로그래머스]주식가격 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 풀이 왜 스택/큐 문제인지 모르겠음 현재의 가격 안에서 for문을 돌리면서 다음 가격과의 비교를 통해서 현재 인덱스의 가격을 하나씩 증가해주어서 해결했음!! 코드 // 코딩테스트 연습 - 스택/큐 - 주식가격 // https://programmers.co.kr/learn/courses/30/lessons/42584 ..

[프로그래머스]기능개발 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 풀이 배열로 풀었는데 중간에 큐로 바꿔서 풀 수도 있을 듯?? 내가 푼 방법말고 다른 방식의 풀이도 있을 것 같음. 내가 푼건 마지막에 각 배포마다 몇 개의 기능이 배포되는지 계산하는 부분이 좀 더러워서,,, ㅠ 코드 // 코딩테스트 연습 - 스택/큐 - 기능개발 // https://programmers.co.kr/learn/courses/30/le..

[Softeer]장애물 인식 프로그램 - Java

문제 https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=409 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 풀이 흔히 볼 수 있는 dfs 문제! 포인트는 블록의 개수를 세어줘야 하는데 언제 count++를 해줄 것인지 블록에 포함된 장애물의 개수를 어떻게 세서 어떻게 정렬해서 출력할 것인지 얘네만 생각하면서 풀면 쉽게 풀 수 있을 걸???? 자세한 건 주석으로!! 코드 // Softeer - 장애물 인식 프로그램 // https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=409 import java.util.*; import java.io.*; public c..

[Softeer]지도 자동 구축 - Java

문제 https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=413 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 풀이 이 문제도 그냥 수학적 사고를 필요로 하는 문제인 것 같다. 다른 트릭? 같은건 없고 그냥 점화식을 잘 세워보던가 규칙을 찾아보던가 편하게 풀 수 있는 문제임!! 코드 // Softeer - 지도 자동 구축 // https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=413 import java.io.IOException; import java.util.Scanner; public class Softeer_Num413_지도자동구축 { public st..

[Softeer]바이러스 - Java

문제 https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=407 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 풀이 특별한 알고리즘 문제가 아니라 수학적인 사고를 보는 문제인 것 같다! Softeer에 다른 문제들도 어떤 유형인지 흘끔흘끔 봤는데 이런 수학적 사고를 요하는 문제들도 꽤 있는 것 같다! 문제의 조건을 잘 보고 풀어야 한다. 그냥 평소처럼 풀면 무조건 시간 초과나, overflow가 일어나기 때문에 타입이나, 푸는 방식에 주의하며 문제를 해결해야 할 듯 하다!!! 그냥 전체 결과를 다 계산한 다음에 1000000007로 mod 연산을 하면 overflow가 나기 때문에 제곱을 한번 할 때마다 mod 연..

[Softeer]회의실 예약 - Java

문제 https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=626 풀이 처음 풀어보는 현대 문제임!! 별 두개라 그냥 쉽게 풀 수 있을 줄 알았는데, 생각보다 어려워서 오래 걸렸다리,,,, 아니 이게 별 두개라고,,,??? 진짜 나는 한참 멀었다 ㅠ 후우우우ㅜㅜ우ㅜ 암튼 포인트는 출력할 때 사전순으로 회의실 정보를 출력해야 되는 것 회의실 사용 가능 시간을 체크할 방식을 찾는 법 -> 나는 시간대 만큼의 크기를 가진 배열을 만들어줘서 체크했음! 그리고 출력할 때 형식을 맞춰줘야 되어서 여간 귀찮은게 아니었다! 자세한건 코드에다가 주석으로 달아놨음!! 코드 // Softeer - [21년 재직자 대회 예선] 회의실 예약 // https://softeer...

[프로그래머스]크레인 인형뽑기 게임 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/64061?language=java 풀이 레벨 1 문제라 쉽게 풀었음 board[][]를 ArrayList랑 Stack으로 구현해도 될 것 같긴한데 그냥 배열로 해주는게 오히려 더 간편한 듯? 바구니는 쉽게 Stack을 사용했음! 코드보면 쉽게 이해할 수 있을거임 ㅎㅎ ㄱㄱ 코드 // 코딩테스트 연습 - 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 // https://programmers.co.kr/learn/courses/30/lessons/64061?language=java package PROGRAMMERS.level1; import java.util.Stack; public class ..

[백준]17073번 나무 위의 빗물 - Java

문제 https://www.acmicpc.net/problem/17073 17073번: 나무 위의 빗물 첫째 줄에 트리의 노드의 수 N과 1번 노드에 고인 물의 양을 의미하는 정수 W가 주어진다. (2 ≤ N ≤ 500,000, 1 ≤ W ≤ 109) 다음 N-1줄에 걸쳐, 트리에 존재하는 간선의 정보가 U V의 형태로 주어진다 www.acmicpc.net 풀이 처음엔 무슨 소린가 했는데 결국 리프 노드(자식이 없는 노드)의 수로 총 빗물의 양을 나눠주면 답이다! 그러므로 리프 노드를 어떻게 판별할지가 포인트인데, 트리에선 자신과 연결된 노드가 하나밖에 없는 경우가 리프 노드이다. (2개 이상이 연결되어 있으면 자식 노드가 존재하는 것이니까) 이 점을 이용하여 풀었다. 자세한건 주석으로! 코드 // 17..

[백준]2502번 떡 먹는 호랑이 - Java

문제 https://www.acmicpc.net/problem/2502 2502번: 떡 먹는 호랑이 첫줄에 첫 날에 준 떡의 개수 A를 출력하고 그 다음 둘째 줄에는 둘째 날에 준 떡의 개수 B를 출력한다. 이 문제에서 주어진 D, K에 대해서는 항상 정수 A, B (1≤ A ≤ B)가 존재한다. www.acmicpc.net 풀이 피보나치 수열을 응용한 문제임 피보나치나 뭐 파도반 수열인가 이런거처럼 메모리가 초과될 위험이 있을 것 같다? 그럼 문제의 조건이나 문제를 잘 읽어서 대충이라도 시간복잡도를 계산해보고 괜찮겠다 싶으면 해야된다. 안 괜찮으면 DP 등으로 풀어야 됨. 이 문제는 순열에다가 피보나치 수열이라서 가지치기와 DP로 어떻게 푸냐가 포인트임! 3

[백준]4179번 불! - Java

문제 https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 풀이 며칠 전에 푼 '탈출'이라는 문제랑 완전 비슷하다!!! https://seokmimmmmmmmm.tistory.com/123 [백준]3055번 탈출 - Java 문제 https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 ..