(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
(Java) 프로그래머스 행렬 테두리 회전하기
·
코딩 테스트
지금까지 풀어봤던 문제중에 가장 이해가 안가고 어려웠던 문제였다. 문제는 금방 이해했는데 어떻게 풀어야 할지 감도 안왔었다. 일단 문제에서 주어진 기본 행렬을 생성하고 한참을 고민해도 해결 방법이 떠오르질 않았다. 별수없이 다른분들의 코드를 참고했는데 이 코드들도 이해가 가지를 않았다. 검색해보니 회전 알고리즘을 알면 쉽게 풀수 있는 문제라는 글을 봐서 유튜브에서 회전 알고리즘에 대해 설명하는 동영상을 보고야 겨우 이해를 했다. 생각날때마다 다시 풀며 익숙해지도록 해야겠다. (혹시 코드를 보고서도 이해가 잘 가지 않는분들은 이 강의를 보고 코드를 다시 보면 풀 수 있을것 같아 첨부합니다.) https://youtu.be/Z6QwmMQYZr8 최종 코드 class Solution { static int[]..
(Java) 프로그래머스 더 맵게
·
코딩 테스트
처음 문제를 읽고 리스트로 풀려고 했었다. while 안에서 매번 정렬을 한 뒤 첫번째 두번째 값을 꺼내면 될것이라고 생각했는데 테스트 케이스를 통과를 못했다. 정렬을 계속 해주는것 때문인가... 생각해보니 큐로도 풀 수 있을것 같아서 검색해보니 우선순위 큐라는것을 알게 되었고 이를 힙이라는 자료 구조를 가지고 구현하는 것이었다. 한번에 명쾌하게 이해되지는 않는 개념이어서 다시 공부해 봐야겠다. 처음 작성한 코드 import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MoreHot { public static void main(String[] args) { int[] scoville = {1,..