반응형

프로그래머스 55

[프로그래머스] JadenCase 문자열 만들기 - JAVA

프로그래머스 JadenCase 문자열 만들기 - JAVA 문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 1 이상인 문자열입니다. s는 알파벳과 공백문자(" ")로 이루어져 있습니다. 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 ) 문제 풀이 문제를 읽고 Level 2중에서 쉬운 문제라고 생각했습니다. 문자열을 조금이라도 다룰줄 안다면 쉽게 풀 수 있는 문제인거 같습니다. Tip. 백준이나 프로그래머스에서 이와 비슷한 문제들을 여럿 풀어보며 문제 설명 혹은 제한 조건에..

[프로그래머스] 전력망을 둘로 나누기 - JAVA

프로그래머스 전력망을 둘로 나누기 - JAVA 문제 설명 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] ..

[프로그래머스] 피로도 - JAVA

프로그래머스 피로도 - JAVA 문제 설명 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다. 이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있..

카테고리 없음 2021.11.07

[프로그래머스] n^2 배열 자르기 - JAVA

프로그래머스 n^2 배열 자르기 - JAVA 문제 설명 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다. 정수 n, left, right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution..

[프로그래머스] 문자열 압축 - JAVA

프로그래머스 문자열 압축 - JAVA 문제 설명이 너무 길어 생략 [문제 보기] : https://programmers.co.kr/learn/courses/30/lessons/60057 문제 풀이 문자열의 길이를 n이라고 할 때 문자열을 1부터 n/2까지 쪼개며 압축시킨 경우를 전부 확인해봐야하는 완전탐색 유형의 문제이다. 단위별로 총 압축했을 때의 문자열 길이에 압축이 1이상 가능한 경우 압축했을때의 문자열 길이를 더하는 방식으로 단위별 길이를 구할 수 있다. 문자열 s를 순회하며 단위별로 짤라 비교하며 압축 여부를 찾아 길이를 구하는 방식이다. 저처럼 반복횟수가 1인 경우 자르는 길이만큼 더하고, 그 이상인 경우 자르는 길이와 반복 횟수(10이상인경우 2칸 차지하므로 생각해서 더해야 한다)의 길이를 ..

[프로그래머스] 직사각형 별찍기 - JAVA

프로그래머스 직사각형 별찍기 - JAVA 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 소스 코드 import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < b; i++) { for (int..

[프로그래머스] x만큼 간격이 있는 n개의 숫자 - JAVA

프로그래머스 x만큼 간격이 있는 n개의 숫자 - JAVA 문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 문제 풀이 제한 조건의 x의 최대값과 n의 최대값으로 계산해보면 int의 범위를 넘는것을 알 수 있다. 문제에 주어진 answer 배열의 타입이 long인 것을 보고 예상했듯이 int형으로 계산하면 마지막 2개의 테스트에서 int 범위를 초과해 틀렸다고 나온다. 꼭 answer배열에 저장할 때 long타입으로 변환하..

[프로그래머스] 행렬의 덧셈 - JAVA

프로그래머스 행렬의 덧셈 - JAVA 문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 문제 풀이 문제 설명을 읽어보면 arr1과 arr2그리고 return하는 배열의 크기가 모두 동일하다는 것을 알 수 있다. i를 arr1의 길이와 j를 arr1[0]길이만큼 반복하면 arr1과 arr2의 모든 수를 순회할 수 있다. 별도의 배열을 만들 필요없이 arr1에 arr2의 값을 더하고 arr1를 return. 소스 코드 class Solution { publ..

[프로그래머스] 핸드폰 번호 가리기 - JAVA

프로그래머스 핸드폰 번호 가리기- JAVA 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 4 이상, 20이하인 문자열입니다. 문제 풀이 문자열 phone_number를 변경하거나 문자열을 만들어 더하기 연산을 하면 메모리 사용 비용이 커 StringBuilder를 이용. 전화번호 뒷 4자리 이전까지의 길이를 반복하며 *을 추가. 뒷 4자리를 sbustring()함수를 통해 추가. 소스 코드 class Solution { public String s..

[프로그래머스] 하샤드 수 - JAVA

프로그래머스 하샤드 수 - JAVA 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 문제 풀이 x를 마지막에 하샤드 수인지 검사할 때 사용해야 하므로 자리수를 구하며 변경되면 안되므로 n에 x값을 저장. n 이 0이 되기 전까지 각 자리수를 sum에 더하고 나누기 10을 하여 자리수를 이동. x가 자리수의 합으로 나누어지는지 나머지 연산으로 검사 후 리턴. 소스 코드 class Solution { public b..

반응형