문제 https://programmers.co.kr/learn/courses/30/lessons/17676?language=java HTML 삽입 미리보기할 수 없는 소스 결과
문제 https://programmers.co.kr/learn/courses/30/lessons/17678?language=java 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00" programmers.co.kr 풀이 우선 입력으로 들어온 String을 정수로 변환해 주는 함수를 작성했다. 간단하게 split() 함수를 이용해 시간과 분을 나누어서 계산했다. ArrayList에 시간 스케쥴을 저장하고 오름차순으로 정렬했다. 버스는 ..
문제 https://programmers.co.kr/learn/courses/30/lessons/17677?language=java 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 풀이 이 문제는 정규표현식에 대해 알면 편하다. 우선 두 String의 문자열들을 추출해야 하는데, String의 처음부터 두 글자씩 끊어서 이것이 영문자로만 이루어져 있다면 HashMap 자료구조에 넣어준다. 여기서 영문자로만 이루어져 있는지 판단하는 것은 정규표현식을 이용할 수 있다. 만약 HashMap에 ..
문제 https://programmers.co.kr/learn/courses/30/lessons/17679?language=java 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 풀이 이 문제는 기능별로 함수를 적절히 나누어 풀었다. 1. 2*2 블록이 같은지 체크하는 함수 2. 블록을 제거하는 함수 2*2 블록이 같은지 체크하는 것은 간단하다. 그냥 현재 블록을 기준으로 오른쪽, 아래, 오른쪽 아래가 같은지 체크하면 된다. 이때 조심할 것은 배열의 범위를 벗어나지 않도록 해야 한다...
문제 https://programmers.co.kr/learn/courses/30/lessons/17680?language=java HTML 삽입 미리보기할 수 없는 소스 결과
문제 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 풀이 자바의 라이브러리를 이용해 10진수를 2진수 String으로 쉽게 변환할 수 있다. 이를 통해 쉽게 문제를 해결 할 수 있다. 다만 주의할 점은 String으로 변환 하였을 때 자릿수에 맞게 '0'을 넣어줘야 한다는 것이다. 코드 HTML 삽입 미리보기할 수 없는 소스 결과
문제 https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 풀이 간단한 구현 문제이다. 최대 3번의 다트를 던질 기회가 있다고 했으므로, int[3] 배열을 만들어서 점수를 기록하면 간단하다. 코드 HTML 삽입 미리보기할 수 없는 소스 결과
문제 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 풀이 처음 문제를 봤을 땐 DFS를 사용하면 간단하게 풀릴 것 같았다. 하지만 결과는 시간초과..... 이 문제는 단순히 DFS만을 사용하면 시간초과가 발생한다. DFS와 DP를 섞어서 사용해야 한다. 만약 DFS를 통해 모든 길을 탐색하던 도중 이미 탐색해서 경로를 계산한 좌표를 만난다면 굳이 다시 탐색을 할 필요는 없다. 따라서 이를 미리 저장해놓고 사용하면 된다. 코드 HTML 삽입 ..
문제 https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 풀이 처음에는 자바 String의 split() 기능을 이용해서 쉽게 해결하려고 했다. 하지만 이 방법을 사용하면 메모리 초과가 발생해버린다. 그 이유는 자바의 String은 불변(immutable)이라서 값을 바꿀때마다 매번 새로운 String을 할당하기 때문이다. 따라서 이 문제는 스택 혹은 StringBuilder를 이용해서 풀어야한다. 풀이는 간단하다. StringBui..
문제 https://www.acmicpc.net/problem/1082 1082번: 방 번호 스타트링크가 입주한 사무실은 방 번호를 직접 정할 수 있다. 방 번호를 정하려면 1층 문방구에서 파는 숫자를 구매해야 한다. 숫자를 구매하기 위해 준비한 금액은 M원이고, M원을 모두 사용해 www.acmicpc.net 풀이 숫자를 사서 가장 큰 숫자를 만드려면 어떻게 해야 할까? 아래와 같은 우선순위를 고려해야 할 것이다. 1. 자릿수를 가장 길게 만든다. 2. 맨 앞자리부터 가장 큰 수가 들어가야 한다. 따라서 우선 가장 저렴한 숫자를 최대한 많이 사서 자릿수를 최대한 길게 만든다. 이때 가장 저렴한 숫자가 0이라면, 두 번째로 저렴한 숫자를 맨 앞에 두고 이후 0을 최대한 많이 사서 붙인다. 자릿수를 가장 ..