Algorithm 9

[programmers][Level1][Java] 신규아이디 추천

✏️ Algorithm. 📋 Solved. 1. 각각의 단계에 해당하는 로직을 구성하여 처리 2. 정규식을 활용하면 더 간단히 될 것같다. ✔️ Code. public String solution(String new_id) { String answer = ""; /* * 1. 대문자 -> 소문자 치환 * */ answer = new_id.toLowerCase(); /* * 2. 소문자, 숫자, -, _, . 를 제외한 문자 제거 * */ answer = answer.replaceAll("[^0-9a-z.\\-_]", ""); /* * 3. .문자 2번 연속 -> . 하나로 치환 * */ while(answer.indexOf("..") > -1){ answer = answer.replace("..", "...

[programmers][Level2][Java] 다리를 지나는 트럭

✏️ Algorithm. - 주어진 트럭들이 다리를 지나갈 때 걸리는 시간을 구하는 문제 📋 Solved. 1. 트럭이 지나가는 다리(bridege)를 기준으로 구현하였다. 2. 시간 계산(answer)은 다리위에 트럭이 진입(offer)할 때 마다 시간을 1초씩 추가 하였다. 3. 현재 트럭이 다리에 진입할 경우 하중을 초과하면 0 무게의 트럭을 진입 시키면서 시간을 1초씩 추가하였다. 4. 다리위의 트럭 수가 다리 길이와 같아지면 가장 먼저 진입한 트럭을 내보냈다(poll). 5. 0 무게의 트럭이 아닌 실제 트럭이 진입(offer(truck))하면 다음 트럭(truck)이 진입 한다. 6. 모든 트럭이 진입하면. 마지막 트럭이 진입한 후 시간(answer)에 다리 길이(bridge_length)의 ..

[LeetCode][Easy][Java] 1512. Number of Good Pairs

✏️ Algorithm. - 배열 내부에 같은 값을 가지는 쌍(인덱스)이 얼마나 존재하는지 확인하는 문제(중복 x) 📋 Solved. - 인덱스의 중복이 일어나지 않게 배열 내부를 2중으로 순회 하면서 카운트를 하였다. ✔️ Code. public int numIdenticalPairs(int[] nums) { int count = 0; for(int i =0 ; i< nums.length; i++){ for(int j = i+1 ; j < nums.length; j++){ if(nums[i] == nums[j]) count++; } } return count; }카운트를 하였다.

Algorithm/LeetCode 2021.02.19

[LeetCode][Easy][Java] 1470. Shuffle the Array

✏️ Algorithm. - 주어진 하나의 배열을 x,y 두개의 배열로 나누어 각각 x,y 번갈아가며 값을 집어넣는다 - 주어진 규칙은 x1, y1, x2, y2 ... 형식이다. 📋 Solved. 1. 0~n 까지 반복(주어진 배열의 절반) 2. xi, yi 번갈아가며 값 집어넣기 ✔️ Code. public int[] shuffle(int[] nums, int n) { int[] result = new int[nums.length]; for (int i = 0; i < n; i++) { result[2*i] = nums[i]; //xi result[2*i+1] = nums[i+n]; //yi } return result; }

Algorithm/LeetCode 2021.01.11

[LeetCode][Easy][Java] 1431. Kids With the Greatest Number of Candies

✏️ Algorithm. - 각 아이들(candies[index])에게 일정량의 캔디(extraCandies)를 주었을 때 전체 아이들중에서 가장 많은 캔디를 가지고 있는가? 📋 Solved. 1. 각각 가지고 있는 캔디(candeis[index]) 와 주어진 캔디(extraCandies)의 합계가 가지고있는 캔디의 최대개수(max)보다 크거나 같을 경우 true, 아닐 경우 false 리스트를 반환 ✔️ Code. public List kidsWithCandies(int[] candies, int extraCandies) { List result = new ArrayList(); int max = 0; for (int candy : candies) { max = Math.max(candy, max); ..

Algorithm/LeetCode 2021.01.08

[LeetCode][Easy][Java] 1672. Richest Customer Wealth

✏️ Algorithm. - 2차원 배열에서 각각 1차 배열의 합의 최대 값을 구하기 📋 Solved. 1. 최대값 max 변수 지정 2. 2중 for문을 돌며 각각 1차 배열의 합을 구하기전 sum = 0 초기화 3. Math.max() 함수로 return 값 max에 최대 값 삽입 ✔️ Code. public int maximumWealth(int[][] accounts) { int max = 0; for (int[] account : accounts) { int sum = 0; for (int i : account) { sum +=i; } max = Math.max(max,sum); } return max; }

Algorithm/LeetCode 2021.01.06

[LeetCode][Easy][Java] 9. Palindrome Number

✏️ Algorithm. - 팰린드롬(Palindrome) 이란. 거꾸로 읽는것과 옳바르게 읽는 것이 같은 문자이다. - 101, 12321, '가나가' 와 같은 문자 - 주어진 수가 Palindrome Number인지 판별하는 문제이다. 📋 Solved. 1. Input 값(int)를 String으로 변환한다. 2. String으로 변환한 Input 값을 앞, 뒤의 문자를 비교한다. ✔️ Code. public static boolean isPalindrome(int x) { // 1 String xStr = String.valueOf(x); // 2 for(int i = 0; i < xStr.length()/2; i++){ if(!(xStr.charAt(i) == xStr.charAt(xStr.len..

Algorithm/LeetCode 2020.11.27

[LeetCode][ Easy][Java] 7. Reverse Integer

✏️ Algorithm. - Input으로 받은 수를 reverse 해서 출력 - Int 범위내에서 입력 - reverse 값이 overflows 발생할 경우 0 출력 📋 Solved. 1. Input 값의 절대 값을 String Array 로 변환한다. 2. Reverse 값을 저장할 StringBuilder를 선언한다. 3. Input 값의 부호를 먼저 StringBuilder에 저장한다. 4. 1.에서 선언한 Array를 Reverse로 StringBuilder에 저장한다. 5. Integer로 변환하여 결과값에 대입한다. 6. Integer로 변환 과정에서 변환값이 Integer 범위를 벗어나는 값일 경우 NumberFormatException 이 발생하게 된다. 이때 문제에서 주어진 조건 're..

Algorithm/LeetCode 2020.11.27