ETC/Algorithm
-
[LeetCode/JAVA] 80. Remove Duplicates from Sorted Array IIETC/Algorithm 2023. 8. 24. 17:38
문제 감소하지 않는 순서로 정렬된 정수형 배열 nums가 주어지는데, in-place 방식으로 중복을 제거해야한다. 중복의 최대 허용 개수는 2개 이고, 관계대로 정렬을 유지해야한다. 풀이 중복이 2개까지 허용인점과 순서가 정렬되어있다는 점을 고려해서, 인덱스 1부터 시작하면서 앞의 값과 비교를 한다. 여기서 먼저 중복된 개수를 수정하고, 수정된 결과에 따라 배열의 요소를 변경해준다. class Solution { public int removeDuplicates(int[] nums) { // 시작위치는 1 int pos = 1; // 중복 횟수를 체크할 변수 int sameCount = 0; for(int i = 1; i < nums.length; i++){ // 만약 중복 된 수라면 sameCount..
-
[LeetCode/JAVA] 26. Remove Duplicates from Sorted ArrayETC/Algorithm 2023. 8. 24. 16:30
문제 감소하지 않는 순서로 정렬된 정수형 배열 nums이 주어지고, 이전 풀이와 같이 in-place 방식으로 중복된 요소들을 제거해야 한다. 또한 각각의 고유한 요소는 한 번만 나와야한다. 그리고 이미 만들어져있던 순서대로 감소하지 않는 관계를 유지해야하고, 반환값으로 고유한 요소의 길이를 반환해야한다. 풀이 시작 인덱스 0부터 시작해서 일일이 비교한 다음 다른 값이 나오게 된다면 그 때 다른 값을 순서대로 앞으로 당겨서 넣어주면 될 것이다. 이전 LeetCode 문제들과 비슷한 유형이다. 코드 class Solution { public int removeDuplicates(int[] nums) { // 시작 인덱스는 0부터 시작한다. int pos = 0; // nums 배열의 전체를 일일이 반복한다..
-
[LeetCode/JAVA] 27. Remove ElementETC/Algorithm 2023. 8. 23. 16:20
문제 배열 nums와 정수 val이 주어지고, nums 배열안에 존재하는 val 값을 전부 제거해야하는데 "in-place" 방식으로 제거해야한다고 한다. 배열 정렬은 바뀌어도 된다고하고, val 값과 같지 않은 nums 배열의 요소 길이를 반환하라고 한다. 여기서 in-place 방식이 뭐지? 정확한 의미를 찾아봤다. 자료 구조를 추가로 사용하지 않고 입력을 변환하는 알고리즘 이라고 하는데, 그럼 nums라는 배열을 그대로 사용해서 val과 같은 값을 제거하고 결과로 남은 유효한 배열의 길이를 반환해야겠다고 생각했다. 풀이 가장 먼저 val과 같은 값을 전부다 비교해야할 것이다. for문을 통해서 0번 째 인덱스 부터 반복문을 진행하고, 반복을 진행했을 때 val과 관련이 있다면 nums 배열에서 사..
-
[LeetCode/JAVA] 88. Merge Sorted ArrayETC/Algorithm 2023. 8. 22. 22:35
문제 감소하지 않는 순서로 정렬된 배열 nums1과 nums2이 주어지고, 각각의 배열에서 유효한 요소의 개수를 나타내는 m과 n이 주어진다. 그리고 이 배열을 감소하지 않는 순서로 하나의 배열로 합쳐야한다. 최종적으로 배열은 함수에 의해 반환되지 않고 배열 nums1 내부에 저장되어야하며, nums1의 길이는 m+n이 되어야한다. m은 합쳐져야하는 요소의 수를, n은 0으로 설정되어있다면 무시해야한다. nums2의 길이는 n을 가진다. 일단 전체적인 내용으로 nums1이란 배열에 정렬해서 저장을 해야하고, 길이는 m+n이 되게 해야한다는 것 같다. 그렇다면 마지막 문장의 의미는 무엇일까? 문제의 예시 2번에서는 nums2의 길이 n=0이라면 nums2는 비어있는 배열이고, 예시 3번에서는 nums1의 ..
-
[백준/JAVA] 1620번 나는야 포켓몬 마스터 이다솜 - HashMapETC/Algorithm 2023. 6. 9. 10:19
풀이 문자열인지 정수형인지 판단? Character.isDigit() 메소드를 사용하여 문자열인지 정수형인지 판단한다. 정수형이면 true값이 나온다. 문자열 전체를 조회해서 정수형에서 나올 수 없는 내용이면 false가 한번이라도 나오게 되면 그 문자열은 정수형이 아니다. 자료형 선택 문자열이 입력되면 정수형으로 몇 번째 포켓몬인지 출력되어야 하므로 HashMap을 정수형이 입력되면 문자열으로 포켓몬 이름이 출력되어야 하므로 ArrayList를 사용하였다. 코드 제출 코드 import java.io.*; import java.util.*; class Main { static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out..
-
[백준/JAVA] 1074번 Z - 분할 정복, 재귀ETC/Algorithm 2023. 6. 9. 10:15
풀이 모든 경우의 수를 다 세면? 시간 초과가 발생한다. 범위를 설정해서 특정 범위의 경우만 연산을 진행해야 한다. 코드 제출 코드 import java.io.*; import java.util.*; class Main { static int N, r, c; static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringToken..
-
[백준/JAVA] 1003번 피보나치 함수 - DPETC/Algorithm 2023. 6. 9. 10:13
풀이 규칙 찾기 앞이 0의 개수, 뒤가 1의 개수이다. 앞의 2개의 배열의 각각의 자리의 합이 현재의 값이 된다. 2차원 배열을 선언해서 풀면 된다. dp[n][0] = n의 0 횟수 dp[n][1] = n의 1 횟수 이다. 코드 제출 코드 import java.io.*; class Main { static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer..
-
[프로그래머스/JAVA] 개인정보 수집 유효기간 - 2023 KAKAO BLIND RECRUITMENTETC/Algorithm 2023. 6. 9. 10:05
풀이 일일이 파싱 문자열로 받아서 일일이 파싱하는 방법 한 달은 28일로 고정 입력 값을 1년=12달 1달= 28일로 변환해서 비교하는 방법 6월에 18개월 뒤면? 24월로 12로 나머지 연산을 하게 되면 0이 나오게 된다. 주의하자. 코드 제출 코드 import java.util.*; class Solution { static HashMap term = new HashMap(); public int[] solution(String today, String[] terms, String[] privacies) { ArrayList parsedToday = new ArrayList(); ArrayList answer = new ArrayList(); StringTokenizer st = new StringT..