본문 바로가기

알고리즘 문제풀이

[SWEA][JAVA] 7465 : 창용 마을 무리의 개수 문제 출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWngfZVa9XwDFAQU&categoryId=AWngfZVa9XwDFAQU&categoryType=CODE&problemTitle=7465&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 설명 서로소 집합을 응용해서 푸는 문제입니다. 완성된 무리의 갯수를 센다는 것은 union을 통해 만들어진 무리들의 대표자 .. 더보기
[백준][JAVA] 2564 - 경비원 문제 출처 : https://www.acmicpc.net/problem/2564 2564번: 경비원 첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄 www.acmicpc.net 문제 설명 코드를 구현하는 데 복잡한 로직이나 알고리즘이 필요하진 않지만, 문제를 푸는 데 있어 아이디어를 생각해야 하는 유형의 문제였습니다. 제 아이디어는 다음과 같습니다. ① 동근이와 상점의 방향이 같거나, 남서, 남동, 서북, 북동이라면 일반 거리계산(맨해튼 거리계산)이 최소 거리입니다. ② 하지만 남북, 서동일 경우 시계 또는 반시계방향 거리를 모두 구해 둘 중 최소인 것을 골라야.. 더보기
[백준][JAVA] 2605 - 줄 세우기 문제 출처 : https://www.acmicpc.net/problem/2605 2605번: 줄 세우기 점심시간이 되면 반 학생 모두가 한 줄로 줄을 서서 급식을 탄다. 그런데 매일 같이 앞자리에 앉은 학생들이 앞에 줄을 서 먼저 점심을 먹고, 뒷자리에 앉은 학생들은 뒤에 줄을 서 늦게 점심을 www.acmicpc.net 문제 설명 난이도는 그렇게 높지 않은 문제로, 원하는 위치로 원소의 삭제 및 삽입이 가능한 ArrayList를 사용해서 인덱스 조작을 통해 문제를 해결했습니다. 문제에서 설명하는 것 그대로 구현해 주었는데, 먼저 학생이 뽑은 번호를 입력받은 다음 그 학생이 들어있는 곳을 인덱스를 통해 지웠습니다. 그런 다음, 학생이 뽑은 번호에 따라 그 학생을 앞으로 옮겨주는 작업을 전체 학생 수인 N.. 더보기
[백준][JAVA] 9375 - 패션왕 신해빈 문제 출처 : https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 문제 설명 각 의상 종류에 대해 의상 갯수를 따로 저장해야 하기 때문에, 해시맵으로 푸는 것이 가장 간단하게 풀리는 방법입니다. 입력값에서 의상의 종류를 key로, 각 종류에 대한 의상 갯수를 value로 저장한 다음, 각 value들을 모두 곱해주면 됩니다. 여기서 주의할 점은 해빈이가 알.. 더보기
[백준][BOJ] 2606 : 바이러스 문제 출처 : https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 설명 읽어보면 유형이 쉽게 보이는 문제에 속합니다. 1번 컴퓨터에 인접한 노드부터 시작해서 연결된 리프노드까지 순회하면서 그 수를 세는 문제이기 때문에, 인접행렬을 통해 그래프 정보를 입력받은 후 DFS구현을 통해 문제를 해결했습니다! 코드 import java.util.Scanner; public class BOJ2606_Virus { static int[][] computers; st.. 더보기
[백준][JAVA] 15900 : 나무 탈출 문제 출처 : https://www.acmicpc.net/problem/15900 15900번: 나무 탈출 평소에 사이가 좋지 않던 성원이와 형석이가 드디어 제대로 한 판 붙으려고 한다. 성원이와 형석이 둘과 모두 똑같이 친한 인섭이가 대결 종목을 정해 가져왔다. 바로 '나무 탈출' 이라는 보드게 www.acmicpc.net 문제 설명 이 문제는 각 케이스에 대한 공통된 규칙을 찾아야 풀 수 있는 문제입니다. 여러 경우를 손으로 직접 그려가며 찾아보면, "각 리프노드부터 루트노드까지의 깊이의 합이 짝수이면 지고, 홀수이면 이긴다"는 규칙이 있습니다. 그 규칙을 바탕으로 인접리스트로 그래프 정보를 입력받은 다음 DFS를 구성해서 문제를 풀었습니다. 코드 import java.io.BufferedReader.. 더보기
[프로그래머스][JAVA] 기능개발 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 문제 설명 길이가 가변적으로 변하는 LinkedList 자료구조를 사용했습니다. 맨 처음에 있는 값이 배포 가능해질 때가지 수를 빼 주다가, 배포가 가능해 지면 linkedlist에서 맨 앞 원소 포함해서 배포 가능한 다른 원소까지 다 제거시키면서 일수를 더해주는 방식으로 구현했습니다! 코드 import java.util.Arrays; im.. 더보기
[SWEA][JAVA] 3289 - 서로소 집합 문제 출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWBJKA6qr2oDFAWr&categoryId=AWBJKA6qr2oDFAWr&categoryType=CODE&problemTitle=3289&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 설명 문제 이름에도 나와있듯이, 서로소 집합 관련 함수들을 구현하는 문제입니다. 서로소 집합의 make, find, unio.. 더보기