Java/java - algorithm
programmer level 2 - 위장 (hash map)
programmer level 2 - 위장 (hash map)
2022.02.01https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr Hash map 과 순열 조합을 사용하여 문제를 해결 하였습니다. 예시 예를들어 headgear 가 3개고 eyewear 가 4 개라고 한다면 경우의 수는 headgear 가 총 4가지 eyewear 가 총 5가지 입니다. headgear (0, 1, 2, 3) eyewear (0, 1, 2, 3, 4) 그렇다면 4 * 5 = 20 이라는 값이 나옵니다. 요기서 스파이는 매일 하루에 한벌은 입어야 한다는 가정이 있으므로 모든날 아무것도 입지않는 경우의수 1개를 뺍니다. 20 - 1 = 19 이것을 코드로 구현 해보겠습니다. package io.pr..
좌표 정렬 구현하기 (Comparable)
좌표 정렬 구현하기 (Comparable)
2022.01.19좌표 정렬 설명 N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요. 정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다. 입력 첫째 줄에 좌표의 개수인 N(3
javasciprt - 후위연산자 (postfix) 연산 stack
javasciprt - 후위연산자 (postfix) 연산 stack
2021.08.17문제풀이 해당 문제는 문자열로 한줄을 받아서 for loop 을 돌아 하나씩 문자열을 확인 한다. 해당 문자열이 숫자면 스택에 push 하고 연산자를 만나면 스택에서 두개의 숫자를 pop 한다. 처음 꺼낸 숫자가 변수 lt 두번째 꺼낸숫자를 rt 라고 하겠다. 왼쪽과 오른쪽의 순서도 중요하다 나누기나 빼기에서 값이 달라질 수 있음 그런다음 switch case 문을 통하여 연산해주면된다. function solution(problem) { const stack = []; for (x of problem) { if (Number.isInteger(+x)) stack.push(+x); else { const rt = stack.pop(); const lt = stack.pop(); switch (x) { c..
java - 최대 길이 연속부분수열 (투포인트)
java - 최대 길이 연속부분수열 (투포인트)
2021.07.30import java.util.Scanner; public class MaximumLengthContinuousSubsequence { public static int solution(int n, int k, int[] bins) { int answer = 0, lt = 0, convertCnt = 0; for (int rt = 0; rt k) { if (bins[lt] == 0) convertCnt--; lt++; } answer = Math.max(answer, rt - lt + 1); } return answer; } public static void main(String[] arg..
java - 연속된 자연수의 합 (투포인터)
java - 연속된 자연수의 합 (투포인터)
2021.07.29import java.util.Scanner; public class ConsecutiveNaturalNumber { public static int solution(int n) { int cnt = 0, lt = 0, sum = 0; int[] nums = new int[n / 2 + 1]; for (int i = 0; i = n) { sum -= nums[lt++]; if (sum == n) cnt++; } } return cnt; } public static void main..
java - 최대 매출(슬라이딩 윈도우)
java - 최대 매출(슬라이딩 윈도우)
2021.07.29import java.util.Scanner; // 슬라이딩 윈도우 public class MaximumRevenue { public static int solution(int k, int[] incomes) { int sum = 0, lt = 0, rt = 0, max = 0; while (rt max) max = sum; sum -= incomes[lt++]; sum += incomes[rt++]; } return max; } public static void main(String[] args) { Scanner in = new Scanner(System.in);..
java - 두배열 합치기(Two pointer)
java - 두배열 합치기(Two pointer)
2021.07.27import java.util.ArrayList; import java.util.Scanner; public class CombineTwoArrays { public static ArrayList solution(int[] arr1, int[] arr2) { int p1 = 0, p2 = 0; ArrayList answer = new ArrayList(); while (p1 < arr1.length && p2 < arr2.length) { if (arr1[p1] < arr2[p2]) answer.add(arr1[p1++]); else answer.add(arr2[p2++]); } for (int i=p1; i
java - 임시반장 정하기(배열)
java - 임시반장 정하기(배열)
2021.07.26) import java.util.Scanner; public class AppointingTempLeader { public static int solution(int n, int[][] students) { int answer = 0, max = Integer.MIN_VALUE; for (int i = 1; i
java - 격자판 최대합 (배열)
java - 격자판 최대합 (배열)
2021.07.25import java.util.Scanner; public class SumOfGrating { public static int solution(int n, int[][] grating) { int answer = Integer.MIN_VALUE; int sumRow, sumCol; for (int i = 0; i < n; i++) { sumRow=sumCol=0; for (int j = 0; j < n; j++) { sumRow += grating[i][j]; sumCol += grating[j][i]; } answer = Math.max(answer, sumRow); answer = Math.max(answer, sumCol); } int diagonalSum = 0, reverseDiagonalSu..
java - 숫자만 추출(아스키 코드)
java - 숫자만 추출(아스키 코드)
2021.07.18import java.util.Scanner; public class ExtractOnlyNumber { public static long solution(String s){ long answer = 0; for (char x: s.toCharArray()) { if (x >= 48 && x
Java - 유효한 팰린드롬 (정규식)
Java - 유효한 팰린드롬 (정규식)
2021.07.18import java.util.Scanner; public class EffectivePalindrome { public static String solution(String s) { String answer = "NO"; s = s.toUpperCase().replaceAll("[^A-Z]", ""); String temp = new StringBuilder(s).reverse().toString(); if (s.equals(temp)) { answer = "YES"; } return answer; } public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine(); System.ou..