코딩테스트 164

[프로그래머스]완주하지 못한 선수 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 해시 문제라고 써있어서 그냥 해쉬로 쉽게 풀었다. 이제 // hashMap에 사람 추가 // 동명이인이 있을 수도 있으니 이미 있는 사람이면 원래 값에 +1 for (String name : participant) { hashMap.put(name, hashMap.getOrDefault(name, 0) + 1); } getOrDef..

[프로그래머스]가장 큰 수 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 풀이 처음엔 그냥 순열 문제인줄 알고 DFS로 풀려고 했는데 numbers의 길이가 10만이라 순열로 풀면 시간 초과나서 안되겠구나 싶었다,,, 그래서 정렬 문제라 해서 정렬로 풀려고 해봤는데 모르겠어서 해답을 찾아봤다 ㅠㅠㅠ 문자열(수)을 앞뒤로 이어 붙인 것 중에 큰 순서대로 정렬을 하면 ..

[프로그래머스]피로도 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 풀이 재귀를 활용한 DFS로 완전 탐색을 해줌! 조건에 맞으면(탐험하지 않은 던전이고, 최소 피로도보다 많은 피로도가 남아 있으면) 다음 단계로 넘겨줌 다음 단계로 넘기기 전에 방문 처리를 해주고 다음 단계를 갔다 오면 다시 방문 처리를 해제해줌! 재귀 함수의 깊이(depth)와 answer를 비교해서 최대값을 answer에 갱신해줌! 자세한건 주석..

[백준]1932번 정수 삼각형 - Java

문제 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 전에 비슷한 문제를 풀어봤던 것 같다! 암튼 그래서 쉽게 풀었음 ㅎㅎ 동적계획법 문제가 나오면 평소처럼 생각하지 말고 거꾸로 생각하거나 밑에서부터 계산해보거나 처음 결과를 가지고 다음 계산에 이용한다거나 등의 접근 방식이 필요하다 이 문제에서는 위에서 아래 층으로 내려온다고 나와있지만 밑에서 부터 올라가는 식으로 계산을 하면 어떨까... 하는 생각으로 풀었다! 자세한건 주석으로! 코드 // 1932번 정수 삼각형 // https://www.acmicpc.ne..

[프로그래머스]124 나라의 숫자 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 풀이 3진법이랑 같은데 3대신 4를 쓴다고 생각하면 됨!! n진법 뭐시기니까 계속 나눠가면서 자릿수랑 나머지를 신경써주면 되겠죠 그니까?? 자세한건 주석으로! 코드 // 프로그래머스 - 연습문제 - 124 나라의 숫자 // https://programmers.co.kr/learn/courses/30/lessons/12899 package PROGRAMMERS.level2; public class Num12899_124나라의숫자 { private static class Solution { // 3진법이랑 같은데 3대신 4를 쓴다고..

[프로그래머스]스킬트리 - 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 연..