풀이법 n이 양의 정수 x의 제곱인지 아닌지 판별하여 제곱이라면 x+1의 제곱을 반환한다. 제곱인지 아닌지 찾기 위해서 for문을 돌려서 판별해 보았지만 테스트 케이스에서 틀린 것이 있었다. 풀이법을 고민하다가 sqrt 와 pow 를 사용하여 문제를 풀면 쉽게 풀린다는 것을 알게 되었다. 정답 코드 class Solution { public long solution(long n) { //sqrt를 사용하여 제곱근으로 바꾸고 //pow로 제곱을 했을 때 n이면 n+1의 제곱 리턴 if(Math.pow((int)Math.sqrt(n), 2) == n) { return (long)Math.pow(Math.sqrt(n)+1, 2); } return -1; } } sqrt와 pow를 적절하게 사용하면 쉽게 풀리는..
전체 글
프로그래밍 공부 기록풀이법 정수 long을 입력 받고 가장 큰 숫자부터 차례대로 내림차순 정렬한 후 출력한다. long을 배열에 넣고 정렬하면 시간 초과가 날거 같아서 어떤 식으로 풀어야 하는지 고민하였다. long n을 String 으로 바꾸어 배열에 넣는다. 배열을 내림차순으로 정렬한다. StringBuilder를 사용하여 하나씩 추가한다. 그리고 다시 Long으로 형변환 후 출력한다 틀린 풀이 import java.util.*; class Solution { public long solution(long n) { //% 와 / 를 이용해서 //n을 뒤에서부터 하나씩 자른 후 list에 추가 //n의 자리 수 뒤에서부터 줄여나가기 List list = new ArrayList(); long answer = 0; Stri..
풀이법 문자열을 정수로 바꿀 줄만 알면 바로 풀리는 문제 코드 class Solution { public int solution(String s) { int answer = 0; //만약 s가 +로 시작하거나 아무런 부호가 없으면 //그대로 출력하기 //만약 s가 -로 시작하면 앞에 -를 붙여서 출력 answer = Integer.parseInt(s); return answer; } }
풀이법n을 각 자리에 맞춰서 거꾸로 배열에 넣어줘야 하기 때문에 길이를 알아야한다따라서 n을 String으로 변환하여 길이를 알아낸 후 아스키 코드에 맞게 빼주어서 반대로 넣어준다 코드 import java.util.*; import java.io.*; class Solution { public int[] solution(long n) { //String으로 변환해주기 //Wrapper Class인 Long.toString 을 사용 String str = Long.toString(n); int [] answer = new int [str.length()]; //배열에 넣어줄 기준이 될 idx int idx = 0; //str과 answer의 idx를 반대로 하여 //반복문을 돌려 각 인덱스에 원소를 넣어..
Given the string, check if it is a palindrome. Example For inputString = "aabaa", the output should be solution(inputString) = true; For inputString = "abac", the output should be solution(inputString) = false; For inputString = "a", the output should be solution(inputString) = true. Input/Output [execution time limit] 3 seconds (java) [input] string inputString A non-empty string consisting of ..
N개의 카드 중 3개를 뽑는 조합을 구하는데 이때 M보다 작거나 같은 애들만 list에 추가하고 list를 정렬한 후 가장 뒤에 있는 값을 출력하니 쉽게 풀렸다. 코드에 주석을 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.Buffer; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; public class Main_2798 { /* N장의 카드 중 M과 가장..
int 형식을 string으로 합쳐서 비교하는 dfs+백트래킹 문제였다. 형변환만 잘 해주면 어렵지 않은 문제이다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.*; import java.util.*; public class Main_2210 { /* 백트래킹 + 조합 문제 5*5 숫자판 0-9 사이의 숫자로 채워져있음 인접한 네방향으로 움직이면서 6자리 숫자 만들기 한번 거쳤던 칸 다시 갈 수 있으며 0으로 시작하는 숫자도 가능 */ //dfs + 백트래킹 //모든 크기의 위치에 대해서 모두 확인 //int + "" -> String으로 변환 //contains를 사용하여 list에 있는지 확인 //서로 다른 여섯자리 수들의 개수를 구하기 static ..
구간합 개념을 제대로 잡을 수 있는 문제였다. i부터 j 까지의 누적합을 구할 때는 처음부터 배열에 더한 값을 저장해놓으면 금방 구할 수 있다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main_11659 { /* N개의 수가 주어졌을 때 i~j 까지의 합을 구하기 누적합 문제 -> 앞에서부터 애초에 더한 다음 배열에 저장하자 */ stati..