본문 바로가기

코딩테스트 연습(with java)

(69)
<꾸준히 해나가는 중입니다> 요즘 업로드를 굉장히 자주 못하고 있다. 현재 나로서 업로드를 하는게 우선일까? 라는 생각이 들기 때문이기도 하고, 시간적 여유가 남아나지 않았다. 나의 군생활이 막바지에 이르고 있다하지만, 국방부는 항상 제역할을 다 해야하기 때문에 바쁠때도 많고 그랬다. 그래도 포기 하지 않았다. 다들 쉬엄쉬엄 하라고 조언한다. 어쩌면 그게 정답일 수도 있지만, 아직은 더 해야할 때가 아닌가 싶다. 휴가를 제외하면 50일도 남지 않은 군생활. 전역하면 난 군인이 아닌, 휴학 중인 학생으로 신분이 바뀐다. 그 말은 즉, 내가 전역하는 순간 나의 좋지 않은 실력을 정당화시키는 일종의 방어기제가 사라진다는 것을 의미하기도 한다. 쉬더라도 나가서 쉬고 싶다. 이 곳에서 무기력하게 누워서 핸드폰만 보는 것은 싫다. 그리고 그렇..
Scanner VS BufferedReader(백준 2161번) 나는 항상 어떠한 값을 입력받을 때 Scanner을 사용해왔었다. BufferedReader와 Scanner의 차이점이 있다는 것을 알고는 있었지만 실제로 그 차이로 문제를 겪었던 적은 없기 때문에 항상 Scanner만을 사용해왔다. 하지만 이번에 2161번을 풀면서 느끼게 되었다. canner는 1KB 크기의 버퍼를 갖기 때문에 입력이 바로 전달되는 반면 BufferedReader는 8KB 크기의 버퍼를 가져 buffer에 입력들을 저장하였다 한 번에 전송하기 때문에 속도가 더 빠르다고 하다. 아래는 내가 2161번을 풀면서 계속 에러가 난 코드와 BufferReader을 사용하여 해결한 코드들이다 또한 값을 출력할 때 arraylist 순회문이 아닌, StringBuilder을 통해 효율성을 극대화 ..
2749번 요즘 들어 백준 문제를 풀고 있는 중이다. DP 문제에 익숙해지기 위해서 새로운 유형의 문제부터 많이 익숙한 문제들을 풀던 도중, 피보나치 수인데 정답률이 상대적으로 낮은 문제를 보고 의아함이 생겨 풀어보게 되었다. 문제 조건 중 가장 눈여겨 보야할 점은 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. 이 부분 내가 작성한 코드는 다음과 같았다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc =new Scanner(System.in); long num = sc.nextLong(); long fibo[] = new lon..
프로그래머스<JadenCase 문자열 만들기> - trim()사용 문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고) 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 1 이상 200 이하인 문자열입니다. s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다. 숫자는 단어의 첫 문자로만 나옵니다. 숫자로만 이루어진 단어는 없습니다. 공백문자가 연속해서 나올 수 있습니다. 입출력 예 s return "3people unFollowed me" "3people Unfollowed Me" "for the last week" "..
프로그래머스<비밀지도>-2018 KAKAO BLIND- 수정 후 완료 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도..
프로그래머스<구명보트> 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요..
프로그래머스<카펫> 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 ..
프로그래머스<행렬의 곱셈> 문제 설명 2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다. 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다. 곱할 수 있는 배열만 주어집니다. 입출력 예 arr1 arr2 return [[1, 4], [3, 2], [4, 1]] [[3, 3], [3, 3]] [[15, 15], [15, 15], [15, 15]] [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] 행렬의 곱셈은..