2024/01 4

백준 1620 나는야 포켓몬 마스터 이다솜 [JAVA]

리뷰 시간초과 HashMap 사용. key값이 입력되면 map.get(key)로 value값을 얻고, value값이 입력되면 map.setKey()를 반복문으로 돌리면서 map.get(key)와 value값을 대조해 올바른 key값을 얻었다. map.setKey() 반복문을 최대 100000번 돌리는 과정에서 시간초과가 발생한 것 같다. 위의 문제 해결을 위해, HashMap과 ArrayList 두개를 사용해서 값을 저장한 뒤, 문자가 입력될 경우에는 map.get(key)를 사용해 값을 얻고, 숫자가 입력될 경우에는 setKey()반복문 대신 list.get(int)를 사용해서 즉시 값을 얻도록 했다. 공부한 것 HashMap key값으로 value값 찾기 map.get(key값) HashMap val..

ALGORITHM 2024.01.28

백준 2745 진법 변환 [JAVA]

리뷰 성공 char타입 계산 실수가 여러번 있었다. 공부한 것 제곱 메소드 : Math.pow(double A, double B) = A의 B승 char타입 값이 숫자인지 확인하는 메소드 : boolean Character.isDigit(char C) char타입 연산 방법 정리 //주요 아스키코드 문자 ASCII CODE 0 48 A 65 a 97 //char타입 비교 시 따옴표 붙이기 n.charAt(i) == 1 //(x) n.charAt(i) == '1' //(o) //char타입 숫자를 int로 변환하려고 할 때, (int)를 붙이면 아스키코드 값이 반환된다. //char타입 숫자 - '0' 을 하면 유니코드로값으로 연산 후 10진수와 동일한 값을 반환한다. arrn[i] = (int)n.cha..

ALGORITHM 2024.01.04

백준 1934 최소공배수 - 3가지 방법 [JAVA]

리뷰 메모리 초과 for문 사용, 1씩 증가시키면서 곱한 뒤 HashSet에 넣는 작업을 반복했고 도중에 add()메소드가 false를 리턴하면 그 값을 최소공배수로 출력하였다. 입력되는 수가 크면 클수록 앞에서부터 하나씩 비교하는 건 비효율적이어서 메모리 초과가 뜬 것 같다. 위의 메모리 초과 문제를 해결하기 위해 둘 중 큰 수만 for문 사용, 1씩 증가시키면서 곱한 뒤 작은 수로 나눴을 때 나머지가 0이 되는 값을 최소공배수로 출력하였다. 공부한 것 추가적으로 최소공배수를 구하는 방법으로는 유클리드 호제법이 있다. 최소공배수 = 두 수의 곱/최대공약수 문제 더보기 문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를..

ALGORITHM 2024.01.02