자바 97

[프로그래머스, 자바] 다항식 더하기

풀이 우선 해당 문제는 StringTokenizer를 사용하여 빈 공백을 제거한 문자를 받아서 x와 함께 있는 문자는 substring을 사용해서 x 전까지만 정수 타입 x에 담고 정수만 있는 경우 y에 담아서 조건 처리 후 해결. 자바 문제는 또 오랜만에 풀다보니 쉽지 않았어서 헷갈렸던 코드에 대해 한 번 끄적이고 마무리 하겠습니다. 우선 StringTokenizer로 분해된 문자가 몇개 있지 모를 경우엔 hasMoreTokens()를 사용해서 반복할 수 있도록 하기 또한 substring에 첫 인자값만 넣으면 하나만 되는 것으로 기억하고 있었는데 그게 아니였다. 그리고 String.format()을 사용해서 문자안에 %d,%s,%f로 원하는 타입의 값을 추가할 수 있다는 것. import java.u..

알고리즘 2024.03.15

[프로그래머스, 자바] 완주하지 못한 선수

풀이 HashMap을 활용한 풀이 방법으로 hm에 participant의 key가 있다면 값을 1 증가 시키고 없다면 1로 초기화 한 다 completion 의 개수만큼 1 감소 시킨 다음 마지막으로 값이 0이 아닌 경우를 찾아 return하여 해결 import java.util.HashMap; public class 완주하지못한선수 { public static void main(String[] args) { Solution s = new Solution(); String[] participant = {"mislav", "stanko", "mislav", "ana"}; String[] completion = {"stanko", "ana", "mislav"}; System.out.println(s.solu..

알고리즘 2024.02.26

[백준, 자바, 1384번] 메시지

풀이 name과 check 2차원 배열을 만들어 둔 다음 반복문을 통해 받아오는 입력 값 중 첫 값은 name, 이 후의 값을 확인하여 인덱스 값을 추가한 다음 다시 반복문을 순회하며 check에 추가된 인덱스 값에 맞게 출력문을 출력하며 state에 따른 출력문 또한 함께 출력 예시에선 N으로 된 나쁜 말을 작성하는 친구가 한 명 뿐이지만 숨어있는 입력값으로는 더 많을 것으로 예상되어 아래와 같이 코드를 작성하여 해결 import java.io.*; import java.util.*; public class 메시지 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new In..

알고리즘 2024.02.13

[백준, 자바, 1380번] 귀걸이

풀이 2*n-1 줄로 주어지는 입력 값 중 첫 번째 입력값인 인덱스를 통해 cnt 배열에서 -1 하여 마지막 for문에서 cnt의 값이 1인 인덱스를 name에서 찾아 tc 와 함께 출력하여 해결 import java.io.*; import java.util.*; public class 귀걸이 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int tc = 1; while (true) { int n = Integer.parseInt(br.readLine()); if (n == 0) break; ArrayList n..

알고리즘 2024.02.13

[백준, 자바, 1120번] 문자열

풀이 해당 문제는 입력 받은 b의 문자열을 a 문자열이 한칸씩 이동하면서 가장 오답이 적은 cnt를 찾아 간단히 해결 result의 초기값을 50이라고 둔 것은 최대 길이가 50이라고 했기 때문. import java.io.*; import java.util.*; public class 문자열 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); String a = st.nextToken(); char[] a_li = ..

알고리즘 2024.01.10

[백준, 자바, 1453번] 피시방 알바

풀이 해당 문제는 HashMap을 활용하여 1부터 100번자리까지 미리 만들어둔 다음 방문 손님의 번호에 따라 조건분기하여 해결 import java.io.*; import java.util.*; public class 피시방알바 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Integer n = Integer.parseInt(br.readLine()); StringTokenizer st = new StringTokenizer(br.readLine()); HashMap dic = new HashMap(100); ..

알고리즘 2024.01.10

[백준, 자바, 1440번] 타임 머신

풀이 해당 문제는 순열을 활용하여서 단순하게 해결하고자 했으며 각 영역에 따른 조건 분기를 거친 후 result 값을 변경하여 해결하면 되는데 자바에선 파이썬처럼 순열을 만들어주는 라이브러리가 없다고 한다... ㅋ 그래서 재귀로 하나씩 직접 해결하도록 만들어 해결할 수 있었다. import java.io.*; import java.util.*; public class 타임머신 { static Integer result = 0; public static void main(String[] args) throws IOException{ BufferedReader br =new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new ..

알고리즘 2024.01.09

[백준, 자바, 1251번] 단어 나누기

풀이 해당 문제는 입력된 문자열을 3등분으로 나누어 역순 시킨 문자열 중 사전순 가장 앞의 문자열을 출력하는 문제이기에 단순히 아래와 같이 해결. import java.io.*; import java.util.*; public class 단어나누기 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String x = br.readLine(); Integer x_ln = x.length(); ArrayList result = new ArrayList(); for (int i = 0; i < x_ln-2; i++) { ..

알고리즘 2024.01.08