java 205

25501. 재귀의 귀재 (자바, Java)

미리 만들어진 매소드를 이용하는거라, 문제가 좀 길다. 그래도 친절하게 메이저 언어들은 매소드를 다 만들어줬다. 하긴 그러지 않으면 재귀 문제라 하기엔 너무 넓은 문제가 되버리니... 펠린드롬 여부는 이미 생성된 매소드가 알아서 잘 판별하지만, 언제쯤부터 판단하는지를 알기 위해 재귀를 써야하는 경우다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static int[] recursion(String s, int l, int r, int count){ count++; if(l >= r) { int[] result = new int[2]; ..

백준 문제풀이 2022.10.01

17478. 재귀함수가 뭔가요? (자바, Java)

원래 백준 단계별 풀이-재귀 파트에 있었는데, 개편되면서 사라져버렸다. 그래도 푼게 아까우니까... 텍스트는 복붙하는게 정신건강상 좋다. 직접 쳤다가 오타났는지 안되길래, 복붙해서 쓸모없는 부분 쳐내고 완성시키니까 잘 됐다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { private static int n; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); n =..

백준 문제풀이 2022.10.01

10870번 : 피보나치 수 5 (자바, Java)

팩토리얼 문제와 마찬가지로, 매우 쉽고 재귀를 꼭 쓸 필요도 없지만, 연습삼아 재귀함수로 푸는 문제. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); System.out.println(fibo(n)); } public static int fibo..

백준 문제풀이 2022.10.01

10872. 팩토리얼 (자바, Java)

자기자신을 호출하는 재귀함수 문제로 넘어왔다. 문제자체는 아주 쉽다. 그냥 반복문을 구성해도 되지만, 새로운 재귀함수 개념을 이해하기위해 기초적인 문제를 주었으니, 이왕이면 풀라는대로 푸는게 더 효율적인 학습방법이라고 생각한다. 내가 이해한 재귀함수는, 재귀함수의 끝부분이 되는 초기값을 설정해주고, 이후 자기자신을 호출하면 계속 내려오다가 초기값까지 떨어지게 되며 완료하는 형태를 떠올려주면 된다고 생각한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static long fact (int num) { if (num

백준 문제풀이 2022.10.01

18870. 좌표 압축 (자바, Java)

좌표압축이란, 상대적인 값만 비교하기 위해 불필요한 부분을 압축하는 거라 생각하시면 되겠습니다. 각종 파일압축과 비슷한 원리로 작동합니다. 문제에서는 순위개념으로 이해하셔도 되겠습니다. 제일 낮은 숫자가 0순위고, 이후 1순위씩 올라가는 식으로. 처음에 이클립스로 풀었지만 시간이 초과되었고, 이후 제가 소개해드렸던 블로그를 통해 HashMap 자료형에 대해 알게되어 풀 수 있었습니다. HashMap 자료형은, key값과, key값에 대응되는 value값이 있는 자료형입니다. 아직 다양하게 사용해본 것이 아니기 때문에, 설명을 아끼려합니다. 자세한건 이쪽을 참고해주세요! https://st-lab.tistory.com/279 1. 처음 시도하여 이클립스에서는 성공했으나, 시간초과로 제출에서 실패한 코드 i..

백준 문제풀이 2022.10.01

10814. 나이순 정렬 (자바, Java)

int와 String의 2차원 배열이고, int순으로 정렬하라는 문제입니다. 왜냐하면 나이순으로 정렬하고, 나이가 같으면 이름순이 아니라 가입순인데, 입력값이 가입순으로 주어진다고 했기 때문입니다. 앞선 문제들하고 딱히 다를게 없습니다. 나이순으로 비교하도록 Arrays.sort를 Override해줘서 해결합니다. 저는 split으로 받기 위해, 앞에 나이값도 int가 아닌 string으로 받아 변환했습니다. 대안인 StringTokenizer 또한 string으로 받아야해서 비슷. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public ..

백준 문제풀이 2022.10.01

1181. 단어정렬 (자바, Java)

그냥 Arrays.sort로 정렬해주면 중복단어를 제거할 수가 없습니다. 그래서, 이전과 똑같이 Arrays.sort 를 Overide하여 풀었습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Comparator; public class Java1181 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()..

백준 문제풀이 2022.10.01

11651. 좌표 정렬하기 2 (자바, Java)

앞 문제랑 똑같습니다. 단지, y좌표가 우선시될뿐. 앞선 문제에서 순서만 바꿔주면 됩니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] xy = new int[n][2]; for (int i=0; i { if (e1[0] == e2[0]..

11650. 좌표 정렬하기 (자바, Java)

이거 실버5인데, 생각보다 엄청엄청 어려웠다. Arrays.sort를 람다식을 이용해 오버라이딩해서 해결. 덕분에 많은걸 배웠다. 앞으로도 내장함수를 직접 변환할 줄 알아야겠다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] xy = ne..

1427. 소트인사이드 (자바, Java)

내림차순 사용법에 대해 배웠다. Arrays.sort에서 내림차순 정렬인 reverseOrder는 기본자료형에서는 불가능하므로, 정수에서 사용하려면 int가 아닌 Integer에서 사용해야함. 예전에 많이 헷갈렸던 한글자 추출에 대해, 크게 헷갈리지 않게 되었다. charAt으로 뽑고, String으로 전환. 자리별 숫자에 대한 추출은 다른 방법도 많다. 예전에 즐겨썼던 방식을 상용로그를 이용해 자릿수를 확정짓고, 자릿수에 따라 10으로 나눈 나머지를 추출하고 10으로 나누고…를 반복하는 식이었는데, 이게 연산을 많이 잡아먹는 편이라 자꾸 제한에 걸리게 되다보니, 요즘은 잘 쓰지 않았다. import java.io.BufferedReader; import java.io.IOException; import..