Algorithm/Programmers 48

[프로그래머스] 큰 수 만들기 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 해당 문제에서는 특정 수가 문자열로 주어졌을 때 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 요구하고 있습니다. 제가 접근했었던 방법은 주어진 문자열을 순회하면서 앞선 숫자가 뒤에 나오는 숫자보다 작을 경우 해당 숫자를 지워나가는 방식으로 접근하는 것이었습니다. 이때 뒤에 나오는 숫자보다 앞선 숫자가 더 크다면 제거할 수 있는 수(k)의 여분이 있는 경우에 대해서만 추가적으로 뒤에 나오는 숫자들을 탐색하도록 했고 이때 나오는 숫자 보다 작다면, 앞선 숫자를 제거하였습니다. 다만..

[프로그래머스] 조이스틱 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 해당 문제에서는 완성해야 하는 알파벳 이름이 주어졌을 때 이를 만들기 위한 최소한의 조이스틱 조작 횟수를 요구하고 있습니다. 우선 조이스틱의 조작은 크게 알파벳 이름을 조작하는 것과 커서 이동을 조작하는 것 이 두 가지로 나뉜다고 볼 수 있습니다. 알파벳 이름 조작하기 알파벳 이름을 조작하기 위해 먼저 만들어야 할 이름의 문자와 최초 문자(A) 간 아스키 코드 값 차이를 구하도록 했습니다. 이때 이 값(gap)이 13 미만이라면 이 값만큼 조작하는 것이 최소 조작 횟수일 것이고, 13 이..

[프로그래머스] 소수 찾기 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 해당 문제에서는 임의의 숫자 문자열이 주어졌을 때 각각의 숫자로 만들 수 있는 수 중 소수의 개수가 몇 개인지를 요구하고 있다. 우선 주어진 숫자 문자열을 토대로 만들 수 있는 모든 경우의 수를 탐색하도록 했는데, 이때 백트래킹을 이용했다. 이후 백트래킹을 통해서 만들 수 있는 수를 탐색하면서 해당 수가 소수인지를 판별하도록 했다. 다음은 특정 수가 소수인지를 판별하는데 사용했던 로직이다. private boolean isPrime(int n) { if (n < 2) { return fa..

[프로그래머스] 행렬 테두리 회전하기 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 해당 문제에서는 n * m 행렬(각 원소 값은 1 ~ n *m)이 주어질 경우 특정 영역의 테두리를 회전시킬 때마다 해당 테두리에서 가장 작은 숫자를 순서대로 구하는 것을 요구하고 있습니다. 우선 주어진 테두리 영역 데이터를 통해 회전 축을 정하고 값들을 회전시킬 수 있었습니다. 이때 각각의 원소값들을 회전시킬 때마다 일일이 최소값을 구해주었습니다. for (int[] query : queries) { rowStart = query[0]; colStart = query[1]; rowEnd..

[프로그래머스] [1차] 뉴스 클러스터링 - Java

문제 설명 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 접근 방법 해당 문제는 두 개의 문자열이 주어졌을 때 이들간 자카드 유사도를 요구하고있습니다. 우선은 문제에서 요구하는 방식대로 각각의 문자열에 대해 다중집합 원소를 구하는 로직을 작성했습니다. private Map getMultipleSets(String str) { Map multipleSets = new HashMap(); Pattern p = Pattern.compile("[^a-zA-Z]"); String key; for..