본문 바로가기

Algorithm

(390)
[프로그래머스(Java)] 평행 Level. 0 문제 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해 보세요. * 제한사항 - dots의 길이 = 4 - dots의 원소는 [x, y] 형태이며 x, y는 정수입니다. 0 ≤ x, y ≤ 100 - 서로 다른 두 개 이상의 점이 겹치는 경우는 없습니다. - 두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요. - 임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다. 풀이 class Soluti..
[프로그래머스(Java)] 겹치는 선분의 길이 / map.merge() Level.0 문제 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해 보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다. 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다. * 제한사항 - lines의 길이 = 3 - lines의 원소의 길이 = 2 - 모든 선분은 길이가 1 이상입니다. - lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 ..
[프로그래머스(Java)] 안전지대 Level. 0 문제 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return 하도록 solution 함수를 완성해 주세요. * 제한사항 board는 n * n 배열입니다. 1 ≤ n ≤ 100 지뢰는 1로 표시되어 있습니다. board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다. 풀이 class Solution { public int solution(int[][] board) { int answer = ..
[프로그래머스] 프렌즈4블록 Level. 2 문제 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다. 만약 판이 위와 같이 주어질 경우, 라이언이 2×2로 배치된 7개 블록과 콘이 2×2로 배치된 4개 블록이 지워진다. 같은 블록은 여러 2×2에 포함될 수 있으며, 지워지는 조건에 만족하는 2×2 모양이 여러 개 있다면 한꺼번에 지워진다. 블록이 지워진 후에 위에 있는 블록이 아래로 떨어져 빈 공간을 채우게 된다. 만약 빈 공간을 채운 후에 다시 2×2 형태로 같은 모양의 블록이 모이면 다시 지워지고 떨어지고를 반복하게 된다. 위 초기 배치를 문자로 표시하면 ..
[프로그래머스(Java)] 주사위 게임 3 / Collections.sort() Level. 0 문제 1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다. - 네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다. - 세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다. - 주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다. - 어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다. - 네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 ..
[프로그래머스(Java)] 연속된 수의 합 Level. 0 문제 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return 하도록 solution함수를 완성해 보세요. * 제한사항 - 1 ≤ num ≤ 100 - 0 ≤ total ≤ 1,000 - num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다. 풀이 import java.util.*; class Solution { public int[] solution(int num, int total) { int[] answer = new int[num]; int middle = total%num == 0 ? total/num ..
[프로그래머스(Java)] 분수의 덧셈 / 유클리드 호제법 Level. 0 문제 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. * 제한사항 - 0 = 1; i--){ if(totalSon % i == 0 && mother % i == 0){ totalSon /= i; mother /= i; } } int[] answer = {totalSon, mother}; return answer; } } https://school.programmers.co.kr/learn/courses/30/lessons/120808# 프로그래머..
[프로그래머스] [3차] 파일명 정렬 / stable_sort Level. 2 문제 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다. 버전 번호 외에도 숫자가 포함된 파일 목록은 여러 면에서 관리하기 불편했다. 예컨대 파일 목록이 ["img12.png", "img10.png", "img2.png", "img1.png"]일 경우, 일반적인 정렬은 ["img1.png", "img10.png", "img12.png", "img2.png"] 순이 되지만, 숫자 ..