본문 바로가기

프로그래머스14

자바 - 프로그래머스 - 숫자 짝꿍 (feat. 시간초과) 숫자 짝꿍 문제는 다음과 같다.문제와 예시 함정이 많아 시간이 생각보다 많이 걸렸고 시간초과 등의 에러가 발생하여타 풀이를 참조하여 풀었다. 🤓 코드 설계1. x,y를 int로 치환하기2. 이중 for문을 돌려서 동일한 값 PriorityQueue에 넣어 반환하기 🤨 구현한 코드 (복잡한 로그 주의⛔️)더보기package ImplementationAlgorithm;//import java.io.IOException;import java.lang.management.LockInfo;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;import java.util.stream.Stream;public class.. 2024. 5. 4.
자바 - 프로그래머스 - 로또의 최고 순위와 최저 순위 (최적화 하기) 프로그래머스에서 로또의 최고 순위와 최저 순위를 풀었다. 문제는 어렵지 않았으나 최적화된 코드를 고민해 보는 시간을 가졌고 이번 블로그는 그 내용을 다뤘다. 문제와 예시는 다음과 같다. 해당 문제에 대한 접근 방법은 생각보다 용이했다. 🤓 코드 설계 1. lottos와 win_nums의 같은 값이 있다면 카운트한다. 2. 0의 개수를 카운트한다. 3. 같은 값의 개수는 최저 순위, 같은 값의 개수+0의 개수가 최고 순위가 된다. 🤨 구현한 코드 (복잡한 로그 주의⛔️) 그렇게...구현한 나의 코드는 else if의 성지가 되었다... package ImplementationAlgorithm; import java.io.IOException; import java.util.Arrays; public cla.. 2024. 4. 23.
자바 - 프로그래머스 - 소수 만들기 (feat. 약수) 소수 구하기 문제를 풀어보았다. 문제와 예시는 다음과 같다. 여기서 소수란 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다. 예를 들어, 5는 1×5 또는 5×1로 수를 곱한 결과를 적는 유일한 방법이 그 수 자신을 포함하기 때문에 5는 소수이다. (참고 : 위키백과) 1. 어떤 문제가 있었는지 결국 약수가 1과 자기 자신만을 가진, 약수가 총 2개인 수를 구하는 방법이었다. 2. 내가 시도해 본 것들 (힌트) 아래 힌트를 보기 전에 스스로 먼저 문제를 고민해보고 시도해보길 추천한다! 🤓 코드 설계 (1) 3개의 수를 더하는 방법 삼중 for 문을 돌려서 합계를 구한다. (2) 합계의 약수를 구하기 위해 나눌 수를 for문을 통해 만들어낸다. (3)약수를 구하는 방법은 나머지가 0인 수로 .. 2024. 4. 18.
자바 - 프로그래머스 - 카드 뭉치 (feat. 런타임 에러) TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 1. 어떤 문제가 있었는지 프로그래머스에서 카드 뭉치 문제를 풀다가 다음과 같은 문제에 도달했다. 1) 테스트 케이스 실행 시 런타임 에러가 나다. 우선 문제와 예시를 보자. 사실 카드 뭉치의 경우, 문제가 제법 단순해서 조금 고민하고 바로 코드를 적어갔다. 참, 아래 내용은 코드 설계가 있기 때문에 한 번 더 고민하고 문제풀이 시도를 해보길 바란다! 🤓 코드 설계 // 한 번만 사용 가능 // 꼭 다음 카드만 사용 가능 // 단어 순서 바꿀 수 없음 // for문 돌면서 해당 카드가 카드 더미에 없을 때 다음 더미에도 카드가 있는지 확인해 보기 꼭 다음 카드만 사용했기에 기본 배.. 2024. 4. 15.
자바 - 프로그래머스 - 두 개 뽑아서 더하기 (Stack) TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 1. 어떤 문제가 있었는지 프로그래머스 문제 중 두 개 뽑아서 더하기 라는 문제를 마주했다. 내용은 다음과 같다. 2. 내가 시도해 본 것들 🤓 코드 설계 (1) Sort로 정렬 (2) 정렬한 배열을 이중 for문으로 값 구하기 (3) 중복값 제거하기 (4) Sort로 배열 정렬 (2) 번에 있어서 처음에는 배열에 담을 그릇을 Queue로 사용하였으나 FIFO이기 때문에 순서대로 담긴 것은 오름차순이었다. 이때 for문을 돌려 위에서부터 아래로 배열을 담아 que.pop()을 하면 됐겠지만 더 효율적인 방법을 생각하다가 Stack을 구현하게 되었다. Stack은 FILO이니 단방향.. 2024. 4. 9.
자바 - 프로그래머스 - 숫자 문자열과 영단어 숫자 문자열과 영단어 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시 🤨 구현한 코드 (복잡한 로그 주의⛔️) 처음 문제를 보았을 때, 먼저 떠오른 생각은 영문자를 숫자로 인식해서 바꿔주면 되겠지였다. 분명 자바의 내장 함수가 있었는데 기억이 안 나서 20분 정도 이것저것 끙끙 시도해 보다가 string의 replace()를 깨달았다. 나란 사람.. 기본 함수는 외우자 😂 그렇게 해서 완성된 코드.. class Solution { public int solution(String s) { s = s.replace("zero", "0"); s = .. 2024. 4. 4.
자바 - 프로그래머스 - 삼총사 프로그래머스 문제 '삼총사' 를 풀어보았다. 문제와 예시는 다음과 같다. 😞 처음 구현한 코드 (복잡한 로그 주의⛔️) import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { int[] number = {-2, 3, 0, 2, -5}; int answer = 0; // 셋 더 해서 0이 되어야 함 // 경우의 수 // 3 ≤ number의 길이 ≤ 13 for(int i=0; i< number.length-2; i++) { for (int j = 1; j < number.length; j++) { for (int z = 2; j < number.length; j++) .. 2024. 4. 2.
자바 - 프로그래머스 - 이상한 문자 만들기 프로그래머스 문제 '이상한 문자 만들기' 풀이 과정을 정리해 보았다. 😡 처음 구현한 코드 import java.io.IOException; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { String s = "try hello world"; String answer = ""; char[] charS = s.toCharArray(); String[] strS = new String[charS.length]; // 짝수, 홀수 -> 대문자로 변환 for (int i=0; i 대문자로 변환 class Solution { public String solution(Strin.. 2024. 4. 2.
자바 - 최대공약수와 최소공배수 구하기 프로그래머스 문제를 풀다가 최대공약수와 최소공배수 푸는 법을 간단하게 정리해 보았다. (참고 문제: 최대공약수와 최소공배수) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시 먼저 최대공약수는 for문을 돌리면서 주어진 두 숫자의 나머지를 0으로 만드는 최대 숫자를 구하는 방식을 사용하였다. for (int i=1; i 2024. 3. 28.
자바) 문자열이 숫자인지 확인하는 방법 (참고 프로그래머스 - 문자열 다루기) 프로그래머스 알고리즘 문제 - 문자열 다루기 기본 - 를 풀다가 문자열이 숫자로 이루어졌는지 확인하는 방법을 정리해 보았다. 문제와 예시 힌트이자 결론부터 말하면 3가지 방법이 있다. 그전에 잠시! (아직 문제 풀이를 시도하지 않았다면 적어도 30분 이상은 고민해 보시길 추천한다) (혹시 문제에 대한 힌트가 필요하다면 여기를 눌러보자.) 자 - 3가지 방법은 다음과 같다. 1. chartAt()을 활용하여 숫자 체크하기 2. isDigit() 함수 활용하기 3. NumberFormatException 활용하기 1. chartAt()을 활용하여 숫자 체크하기 제일 직관적인 방법이다. for문을 돌려서 문자 하나마다 char형으로 제시한 숫자와 동일한지 확인하기 String s = "983z"; boolea.. 2024. 3. 26.
자바) 등차수열 가볍게 알아보자! 프로그래머스 알고리즘 문제, 부족한 금액 계산하기를 풀며 등차수열의 벽을 느꼈다. 중학생 때 공부했던 공식은 저 멀리 사라지고 이름만 알고 있는 상태이기에 문제를 바탕으로 간단한 정리를 해본다. 문제와 예시 여기서 잠깐! 아래에는 바로 답변이 보이기에 문제를 아직 풀지 않은 분들은 스스로 생각을 더해보고 참고하시길 추천한다 :) 등차수열로 푼 답변 class Solution { public long solution(int price, int money, int count) { long answer = -1; answer = (long)price*count*(count+1)/2 - money; return answer 2024. 3. 26.
Java에서 대소문자 크기 비교하기 (참고: 프로그래머스 - 자바 - 문자열 내림차순으로 배치하기) 프로그래머스에서 문제를 풀다가 자바에서는 대소문자 비교도를 알고 있으면 좋을 것 같아 기록을 남긴다. 참고한 문제 : 문자열 내림차순으로 배치하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시는 다음과 같다. 결론부터 말하면 비교도는 대문자 2024. 3. 25.
프로그래머스 - 가운데 글자 가져오기 - 자바 프로그래머스 알고리즘 문제를 풀다가 해결과정을 기록으로 남겨보았습니다. 가운데 글자 가져오기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시는 아래와 같습니다. 문제를 풀기 위해 설계 과정에서 문자열을 char 배열로 변환 후 저장해야겠다고 생각하였습니다. 그래서! 문자/문자열(String)을 배열로 변환하는 방법 2가지를 소개합니다. 1. 반복문 String s = "abcde"; char[] charS = new char [s.length()]; for (int i=0; i 2024. 3. 25.
프로그래머스 - 문자열의 앞의 n글자 - 자바 난이도 : Level 0 문제는 문자열 my_string에서 n만큼 앞에서부터 문자열을 가져오는 것이다. 문자열을 가져오는 함수로 subString 함수가 생각났다. 1. substring(start, end) my_string.substring(start, end)이라면 start번부터 end까지의 문자열을 가져온다. 예) my_string이 ProgrammerS123, n이 3인 경우, my_string.substring(0,n) 는 my_string.substring(0,3)으로 값은 Pro 2. 1. substring(start) my_string.substring(start)이라면 start부터 문자열을 가져온다. 예) my_string.substring(0)인 경우, 값은 ProgrammerS.. 2023. 12. 4.