(Java) 프로그래머스 나머지가 1이 되는 수 찾기
·
코딩 테스트
TreeSet을 이용하여 구현했다. 풀고나니 굳이 TreeSet을 이용해야 할 필요가 없다는 생각이 들었다.... 최종코드 import java.util.TreeSet; class Solution { public int solution(int n) { int answer = 0; // x를 넣을 treeset 초기화 TreeSet ts = new TreeSet(); int x = 1; for (int i=0; i
(Java) 프로그래머스 비밀지도
·
코딩 테스트
문제를 읽고 어떻게 구현해야 할지 한참을 고민했다. 비트 연산을 까맣게 잊고 있었고 2차원 배열을 만들어서 해결하는 쪽으로 생각 했었는데 금방 막혀버리고 말았다. 2진수에 대해 찾아보다 비트 연산에 대해 알게 되었고 비트 연산을 이용하니 급 진전이 있었다. 다만 비트연산을 통해서 10을 2진수로 변환하게 되면 1010으로 결과가 나왔는데 문제를 해결하기 위해선 001010처럼 n에 맞게 앞에 0을 붙혀줘야했다. 여기도 꽤나 많은 시간을 또 썼고... StringBuilder의 insert를 통해서 해결했다. 최종코드 import java.util.Arrays; class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String..
(Java) 프로그래머스 문자열 내 마음대로 정렬하기
·
코딩 테스트
리스트 맨 앞에 n번째 문자열을 붙이는게 핵심 포인트였다. 처음에는 문자열을 split올 다 잘라서 정렬하려고 했는데 생각처럼 잘 정렬이 되지 않았다. 검색을 통해 힌트를 얻어 해결했다. 최종 코드 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; class Solution { public String[] solution(String[] strings, int n) { String[] answer = new String[strings.length]; List list = new ArrayList(); // 리스트 맨 앞에 n번째 문자열 붙이기 for (int i=0; i
(Java) 프로그래머스 두 정수 사이의 합
·
코딩 테스트
최종 코드 int answer = 0; // temp 배열에 a, b 넣기 int[] temp = {a,b}; // 대소비교를 위해 정렬 Arrays.sort(temp); // a와 b가 서로 같아질때까지 더함 while(!(temp[0] == temp[1])) { answer += temp[0]; temp[0] += 1; } // b를 더함 answer += temp[1]; return answer;
(Java) 프로그래머스 이상한 문자 만들기
·
코딩 테스트
문제를 보고 금방 풀수 있을줄 알았는데 생각보다 시간이 걸렸다. 공백을 검사하는 cnt를 만들어 구현하는게 핵심이였다. 최종코드 class Solution { public String solution(String s) { String answer = ""; // 공백 감지를 위한 cnt 생성 int cnt = 0; StringBuilder sb = new StringBuilder(); // 문자열 자르기 String[] temp = s.split(""); // cnt를 이용해서 대소문자 바꾸기 for (int i=0; i< temp.length; i++) { if(temp[i].equals(" ")) { cnt = 0; } else if(cnt % 2 == 0){ temp[i] = temp[i].toUp..
(Java) 프로그래머스 다트 게임
·
코딩 테스트
문제를 보고 2가지 방식이 떠올랐다. 문자열을 하나씩 끊어서 검사해서 진행하는 방법 그리고 정규표현식으로 그룹을 나누고 계산하는 방법. 두가지 방법 모두 풀어보았다. 1. 문자열 끊어서 풀기 package progammers; import java.util.Arrays; import java.util.regex.Pattern; public class DartGame { public static void main(String[] args) { String dartResult = "1D#2S*3S"; int answer = 0; // 1. 문자열 마다 검사 int[] score = new int[3]; String tempString = ""; int tempNum = 0; int idx = 0; for (..
(Java) 프로그래머스 피보나치 수
·
코딩 테스트
문제의 조건이 n번째 피보나치 수를 1234567로 나눈 나머지를 반환하라고 나와있다. 근데 이 조건을 잘못 이해하기 쉽다. 먼저 n번째 피보나치 수를 구하고 리턴전에만 나누면 된다고 생각 했는데 아무리 해도 테스트 케이스가 통과가 안되었는데 마지막에만 나누는게 아니라 매번 f(x) 의 값을 구할때마다 나눠줘야 했다... 문제의 조건을 좀 더 명확하게 표현해주면 좋을것 같다. 최종 코드 class Solution { public int solution(int n) { int answer = 0; int f0 = 0; int f1 = 1; for(int i=2; i
(Java) 프로그래머스 JadenCase
·
코딩 테스트
문자열을 분리하고 다시 붙이는 문제이다. split을 이용해서 전부 다 쪼갠후 조건을 따져가며 다시 만들었다. + 연산자 보다 StringBuilder를 이용해서 문자열을 만드는것도 익숙해져 쉽게 풀었다. 최종 코드 import java.util.Arrays; class Solution { public String solution(String s) { StringBuilder answer = new StringBuilder(); // 문자열을 전부 분리 String[] arr = s.toLowerCase().split(""); // 첫번째 문자열은 대문자로 고정 answer.append(arr[0].toUpperCase()); for(int i=1; i
(Java) 프로그래머스 가장 큰 수
·
코딩 테스트
문제가 복잡하지 않아서 만만하게 봤다가 꽤나 시간이 걸렸다. 처음에 숫자를 문자로 변환하는 방법을 생각하지 못하고 삽질을 하다가 다른분들의 코드를 보고 Comparator 인터페이스를 이용해서 풀었다. 최종 코드 import java.util.Arrays; import java.util.Comparator; class Solution { public String solution(int[] numbers) { StringBuilder sb = new StringBuilder(); // 숫자를 문자열로 변환 String[] temp = new String[numbers.length]; for(int i=0; i