본문 바로가기

알고리즘42

[SWEA 7701] 염라대왕의 이름 정렬(JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWqU0zh6rssDFARG SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com HashSet을 이용해서 중복을 제거해준 다음, list로 바꿔서 정렬해 주었다. 길이가 같을 때도 정렬을 해줘야 한다. package day4; import java.io.*; import java.util.*; public class Solution_d4_7701_염라대왕의이름정렬 { static int N; static StringBuilder sb; static HashSet hs; publ.. 2020. 3. 12.
[백준 14889] 스타트와 링크(JAVA/C++) https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 조합으로 한 팀을 뽑아서 체크해주는 방식으로 문제를 풀었다.(true면 start팀, false면 link팀) C++로 풀었을 때는 굳이 벡터에 넣어서 계산했는데(7달 전에 푼거다..과거의 나보다 성장했음을 느낄 수 있었음 ㅎㅎ) 바로 값을 계산해서 답을 구하면 된다. [JAVA] import java.util.Arrays; import java.util.Scanner; public class Main { static.. 2020. 3. 12.
[SWEA 1251] 하나로(JAVA/C++) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15StKqAQkCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 작년 A형 시험에 MST문제가 나와서 된통 당하고, 풀어봤던 문제이다.. 자바로 다시 풀어볼 기회가 생겨서 풀어봤다. 크루스칼 알고리즘으로 풀었는데, 프림 알고리즘도 더 공부해서 써봐야겠다. long 타입으로 지정해 줘야 하는 변수를 잘 확인하자! [JAVA] package day3; import java.io.InputStreamReader; import java.util.PriorityQueue.. 2020. 3. 11.
[백준 1707] 이분 그래프(JAVA) https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 E(1≤E≤200,000)가 빈 칸을 사이에 두고 순서대로 주어진다. 각 정점에는 1부터 V까지 차례로 번호가 붙어 있다. 이어서 둘째 줄부터 E개의 줄에 걸쳐 간선에 대한 정보가 주어지는데, 각 줄에 인접한 두 정점의 번호가 빈 칸을 사이에 두고 주어 www.acmicpc.net 이분 그래프는 각 노드마다, 자기 자신과 연결된 노드의 색깔이 달라야 하는 그래프이다. 노드의 색깔을 모두 0으로 두고 dfs로 1 .. 2020. 3. 11.
[SWEA 7396] 종구의 딸이름 짓기(JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWm8hNu6llcDFASj SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 많이 헤맸던 문제이다. ㅠㅠ 큐 하나를 사용해서 해보려 했지만, 결국 큐 두개를 사용해서 풀었다. 가장 사전순이 빠른 문자열을 구해야 했다. 그래서 현재 문자가 들어갈 자리에 가장 사전순이 빠른 문자열을 찾아주었고, 다음 큐에는 그 문자에서 탐색한 것만 넣기 위해 임시큐에 값을 넣어준 다음, 다시 원래 큐에 복사해줬다. import java.io.BufferedReader; import java.i.. 2020. 3. 10.
[백준 14499] 주사위 굴리기(JAVA/C++) https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 7달 전에 C++로 풀었을 때는 가로 세로 배열을 각각 만들었다. 이번에 자바로 풀 때는 좀 더 간단하게 일차원 배열 하나만 써.. 2020. 3. 10.
[SWEA 7793] 오! 나의 여신님(JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWsBQpPqMNMDFARG SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 악마큐, 수연큐 두 개를 만들어서 큐사이즈만큼 bfs를 돌려줬다. 테스트케이스 10개중 6개만 맞았다고 떠서 틀린 거 찾느라 고생했다.ㅠㅠ while문 종료조건을 수연큐가 비면 종료로 했어야했는데 악마큐로 잘못 썼었다.. 큐를 두개 이상 사용할 때는 주의해서 짜자^^...... import java.io.BufferedReader; import java.io.FileInputStream; impor.. 2020. 3. 10.
[SWEA 5656] 벽돌 깨기(JAVA/C++) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 재귀를 이용해서 N번까지 구슬을 쏴주고, 큐를 이용해서 블록 깨기, 맵이동을 시켜줬다. 맵이동시킬 때 H를 N으로 오타내서 시간을 낭비했다.. 자잘한 실수를 조심하자! [JAVA] import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; impor.. 2020. 3. 10.
[백준 12100] 2048(Easy)(JAVA) https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net 큐를 이용해서 문제를 풀었다. 상하좌우 방향으로 각각 미는 것을 생각해서 계산을 해줬는데, 맵을 90도씩 돌려서 계산하면 더 코드가 간단해질 것이다. 맵을 복사해두는 copy배열을 전역으로 둬서 한번 틀렸다.ㅠㅠ 재귀일 때는 맵카피를 주의하도록 하자! import java.io... 2020. 3. 8.