Problem Solved
[BOJ][Java] 5086번 - 배수와 약수
문제 백준 5086번 문제: 배수와 약수 문제 설명 배수와 약수를 배우는 문제 말 그대로 배수와 약수, 둘 다 아닌 것을 판별해야 하는 문제이다. Scanner로 각 줄의 첫번째 수와 두번째 수를 first, second 변수에 담는다. 만약 first, second 모두 0이면 반복문을 멈춘다 두 수는 judgeNumber 함수에서 수 판별을 받는다. if문으로 각 수들이 조건에 따라 나눠지는지 판별해 결과를 result 변수에 담아 반환한다. 성공 코드 import java.util.Scanner; public class BOJ5086 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuilder..
[BOJ][Java] 1541번 - 잃어버린 괄호
문제 백준 1541번 문제: 잃어버린 괄호 문제 설명 식의 값을 가능한 한 작게 만드는 문제 -를 기준으로 - 연산을 하는데, 이 때 연산하는 값은 +연산이 된 값들이다. 그래서 처음에 -로 나눠서 배열에 넣고 나머지 +로 연결된 문자열은 plus 리스트에 +로 나눠서 정수형으로 변형해서 담아준다. 단, 배열의 첫 번째 값은 무조건 더해 줘야 해서 예외 처리를 해 줬다. 배열의 첫 번째 값이 아니면 빼주면 된다. 성공 코드 import java.util.Arrays; import java.util.List; import java.util.Scanner; import java.util.stream.Collectors; public class Main { public static void main(Strin..
[BOJ][Java] 11399번 - ATM
문제 백준 11399번 문제: ATM 문제 설명 기다리는 시간의 합을 최소화하는 문제 기다리는 시간의 함을 최소화하기 위해서는 작은 수부터 앞에 와야 한다. 시간 제한이 1초이기 때문에 Arrays.sort()를 통해서 정렬 후 값을 더해 나가면 된다. 0번째 수부터 n번째 수의 합의 합을 구하는 것이 목적인데, for문을 한번만 돌고 싶다. 내가 찾은 방법은 두 가지이다. 인출하는 사람마다 반복해서 더해지는 개수를 세서 더하는 방법 5명이 차례대로 인출을 한다면 1번 사람은 5번 더해진다. 1 1+2 1+2+3 1+2+3+4 1+2+3+4+5위와 같이 첫 번째 사람부터 반복 횟수가 1씩 떨어지기 때문이다. 그래서 이를 계산해서 곱해 주면 된다. for (int time = 0; time < withdr..
[LeetCode][Javascript] 26. Remove Duplicates from Sorted Array
문제 [LeetCode][Javascript] 26. Remove Duplicates from Sorted Array 문제 설명 주어진 정렬된 배열의 중복값을 없앤 길이를 출력하는 문제. 단, 주어진 배열을 수정해야 함(새롭게 만들면 안됨) 고차함수는 사용할 수 없는 문제라고 생각하면 될 것 같다. 처음에 Set과 filter를 사용해 보았지만 틀린 답이라고 나왔다. 그래서 for문에 splice를 사용했다. splice는 값을 삭제만 하는 기능도 있기 때문이다. 근데 인덱스를 0번부터 1씩 커가는 식으로 돌리면 3개 이상 중복인 값은 제대로 지워지지 않는다. 사실 이전에 다른 문제를 풀면서도 겪었던 문제인데, 간단하게 뒤에서부터 돌려주면 된다. 나처럼 하지 않고 새로운 length 변수를 만들어 거기에..
[Programmers][Javascript] 가장 큰 수
문제 [Programmers][Javascript] 가장 큰 수 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내는 문제 나는 처음에 sort하는 것을 값들을 10으로 나눈 나머지 값들로 하려고 했다. 근데 그러면 예제 테스트는 통과하지만 전체 예제는 통과하지 못한다. 테스트 케이스를 잘 생각하지 못하겠어서 다른 블로그를 참고했다. 그래서 나온 방법이 앞뒤의 수를 문자열로 더해 수를 비교하는 것이다. 30과 3을 문자열로 더하면 303과 330이 나오게 된다. 이 두 수를 비교해 큰 수대로 정렬한다는 것이다. 자바스크립트에서 숫자에서 문자로 바꾸는 형변환이 숫자 + ''로도 할 수 있어서 map을 이용해 바꿔줄 수 있다. 그리고 마지막으로 ..
[Programmers][Javascript] K번째수
문제 [Programmers][Javascript] K번째수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하는 문제 commands 배열에 조건이 다 들어있다. commands 배열 하나마다 slice 시작, 끝, 정렬 후 인덱스 위치까지 제공되어 있다. 단, 문제에서 말하는 인덱스와 배열에서 쓰이는 인덱스가 다르니 주의해야 한다. 나는 최대한 고차함수로 풀어보려고 했다. 근데 역시 forEach 말고 map으로도 충분히 가능했다. 성공 코드 1번은 내 풀이이고, 2번은 다른사람 풀이이다. 성공 코드 function solution(array, commands) { var answer = []; commands.forEach(element => ..