1. 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr2. 풀이 과정위와 같이 롤케잌의 각 조각의 토핑이 올려져있는 상황에서 롤케잌을 두 조각으로 나눌 때, 토핑의 종류를 동일하게 나누는 방법의 갯수를 세는 문제이다. 이 문제를 가장 쉽게 푼다면 나눌 수 있는 각 경우의 수에서 토핑의 종류를 각각 세서 같은지를 체크하는 식으로 풀 것이다..하지만 이렇게 풀이하게 되면 시간복잡도가 O(N^2)이 되게 된다. 최대 토핑 배열의 길이가 100만이므로 O(N^2)으로는 해결할 수 없다. 따라서 나는 다음과 같은 방법으로 풀이했다. 롤케잌을 나눈 첫번째 조각의 ..
코딩 테스트
1. 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr2. 풀이 과정문제에서 정의한 이진 변환을 1이 될 때까지 반복할 때, 이진변환의 횟수, 제거된 0의 갯수를 세는 문제이다. 문제에서 정의한 이진 변환은 다음과 같다.1. 문자열에서 0을 제거한다.2. 문자열을 0이 제거된 문자열의 길이를 이진법으로 표현한 문자열로 변환한다. 크게 생각할 것 없이 문제 그대로 구현하면 되는 문제이다.바로 코드를 보자. 3. 내 코드import java.util.*;class Solution { public int[] solution(String s) { ..
1. 행렬의 덧셈과 뺄셈각 행렬에서 같은 위치에 있는 값끼리 더하거나 빼는 연산이다.이때 두 행렬의 크기는 같아야 한다. 행렬의 덧셈과 뺄셈을 자바로 구현하면 다음과 같다.// 행렬의 덧셈public static void matrixSum(int[][] arr1, int[][] arr2) { if(arr1.length != arr2.length || arr1[0].length != arr2[0].length){ System.out.println("두 행렬의 크기가 같지 않습니다."); return; } int[][] result = new int[arr1.length][arr1[0].length]; for(int i = 0; i 시간복잡도O(N^2) 2. ..
1. 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 2. 풀이 과정특정 전화번호가 다른 전화번호의 접두어가 되는지를 체크하면 되는 문제이다. 이 문제를 가장 쉽게 해결하는 방법은 하나씩 비교하는 것이다.phone_book[i]와 i가 아닌 다른 전화번호를 하나씩 비교하며 접두어가 되는지 체크하면 된다. 하지만 이 문제의 함정은 입력 크기이다.최대 100만인데 이러면 해당 방법의 시간복잡도인 O(N^2)으로는 풀기 힘들다.따라서 더 효율적인 방법을 생각해봐야 한다. 어떻게 하면 더 효율적으로 해결할 수 있을까? 바로 정렬을 활용하는 것이다.배열을 오름차순..