본문 바로가기

Java

(110)
[java/프로그래머스/340199] 지폐 접기 (while (!((bW <= wW && bH <= wH) || (bH <= wW && bW <= wH)))) ✏️ 문제 설명민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30 * 15이고 지폐의 크기가 26 * 17이라면 한번 반으로 접어 13 * 17 크기로 만든 뒤 90도 돌려서 지갑에 넣을 수 있습니다. 지폐를 접을 때는 다음과 같은 규칙을 지킵니다. 지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다. 접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다. 접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다. 지갑의 가로, 세로 크기를 담은 정수 리스트 wallet과 지폐의 가로, 세로 크기를 담은 정수 리스트 bill가 주어질 때, 지갑에 넣기 위해서 지폐를 최소 몇..
[java/프로그래머스/81301] 숫자 문자열과 영단어 (replaceAll, String.valueOf) ✏️ 문제 설명네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3"이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.✏️ codeclass Solution { public int solution(String s) { String[] numbers = {"ze..
[java/프로그래머스/68644] 두 개 뽑아서 더하기 (set.stream().sorted().mapToInt(i -> i).toArray()) ✏️ 문제 설명정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.✏️ code📌 set.stream().sorted().mapToInt(i -> i).toArray();- set.stream(): set 컬렉션을 스트림으로 변환- sorted(): 스트림 요소 정렬- mapToInt(i -> i): Stream를 IntStream으로 변환. 즉, 스트림 각 요소를 int형으로 변환- toArray(): IntStream의 요소들을 배열 int[]로 변환package programmers;import java.util.*;public clas..
[java/프로그래머스/142086] 가장 가까운 같은 글자 (result[i] = (lastIndex[charIndex] == -1) ? -1 : i-lastIndex[charIndex]) ✏️ 문제 설명문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때,  각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다. a는 자신보다 두 칸, 네 칸 앞에 a가..
[java/프로그래머스/12901] 2016년 (int[] month = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, b += month, day[b%7]) ✏️ 문제 설명2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.  제한 조건 2016년은 윤년입니다. (2월 29일까지 있음) 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)✏️ code📌 int[] month = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 계산하기 ..
[java/프로그래머스/12926] 시저 암호 ((c-base+n)%26+base) ✏️ 문제 설명어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한 조건 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다.✏️ code📌 char는 Java에서 연산할 때 ASCII 코드로 변환되어 숫자로 처리됩니다.📌 A: 65, a: 97 📌 (c-base+n)%26+base- 알파벳이 26개 ..
[java/프로그래머스/86491] 최소직사각형 (Arrays.sort(sizes[i])) ✏️ 문제 설명명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호가로 길이세로 길이16050230703603048040가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000..
[java/프로그래머스/68935] 3진법 뒤집기 (Integer.parseInt(sb.toString(), 3)) ✏️ 문제 설명자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.✏️ code📌 3진법 뒤집기while문으로 나눌 때 이미지 뒤집어진 상태로 3진수가 저장되어 있기 때문에, 다시 10진수로 바꾸어 return만 하면 됩니다.📌Integer.parseInt(sb.toString(), 3)3진법 수를 → 10진수로 바꾸어 줍니다.public class P68935 { public int solution(int n) { StringBuilder sb = new StringBuilder(); while (n >= 3) { sb.append(n%..

반응형