Algorithm 124

[프로그래머스] 소수 찾기 - 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..

[프로그래머스] 단체 사진 찍기 - Java

문제 설명 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 접근 방법 해당 문제는 정해진 8명의 캐릭터에 대해 줄을 세우는데, 어떤 조건을 충족시키면서 줄을 세울 수 있는 경우의 수를 요구하고있다. 우선 단순히 8명을 줄을 세운다면 전체 경우의 수는 40320(8!)이다. 즉, 특정 조건을 충족시키는 경우의 수는 이 보다 작을 것이다. 일차적으로 백트래킹을 이용해 주어진 캐릭터 8명에 대해서 순열을 구하는 로직을 작성했다. private void lineUp(boolean[] visited, int dep..

소수를 판별하는 방법들 - Java

소수를 판별하는 방법들 때때로 알고리즘 문제를 풀다 보면 소수를 찾거나 소수의 개수를 구하는 등 특정 수가 소수인지를 판별해야하는 경우가 종종 발생한다. 여기서 소수란 1과 자기 자신으로 나누어 떨어지는 양의 수를 의미한다. 이때 1은 소수가 아니며 2와 3 그리고 5와 같이 1과 자기 자신으로 나누어 떨어지는 수는 소수이다. 이번 글에서는 특정 수가 주어졌을 때 그 수가 소수인지를 판별하는 방법들을 자바 프로그래밍을 통해 알아보고자 한다. 가장 직관적인 소수 판별 방법 public boolean isPrime(int n) { if (n < 2) { return false; } for (int i = 2; i

Algorithm/Basic 2022.06.11