Seren dev's blog
article thumbnail
[백준] 1759번 : 암호 만들기 - 자바[Java]

https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이 문제를 보고 조합을 이용해야겠다는 생각이 들었다. 암호에는 알파벳을 중복하여 사용할 수 없고, 암호를 이루는 알파벳이 증가하는 순서로 배열되어야 한다. 즉, 입력받는 C개의 문자를 배열에 저장하여 알파벳 순으로 정렬하고, 배열 인덱스(0 ~ C-1)의 모든 조합의 경우의 수를 구하면, 가능성 있는 암호의 모든 경우를 구할 수 있다. 조합은 DFS로 구현한다. 조합을 구현하는 기본 틀은 다음과 같다..

article thumbnail
[백준] 1244번 : 스위치 켜기 - 자바[Java]

https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 풀이 스위치의 상태를 입력받고 학생의 성별에 따라 다르게 처리하면 된다. 스위치 배열의 인덱스를 1부터 시작하여 n까지 입력받기로 정했기 때문에 이후 인덱스의 범위를 체크할 때 1부터 n까지 체크해야 한다. 코드 import java.io.*; import java.util.*; public class Main { static int n; public static void chageSwitc..

[백준] 4396번 : 지뢰찾기 - 자바[Java]

https://www.acmicpc.net/problem/4396 4396번: 지뢰 찾기 지뢰찾기는 n × n 격자 위에서 이루어진다. m개의 지뢰가 각각 서로 다른 격자 위에 숨겨져 있다. 플레이어는 격자판의 어느 지점을 건드리기를 계속한다. 지뢰가 있는 지점을 건드리면 플레이어 www.acmicpc.net 풀이 간단한 구현 문제다. 지뢰의 위치와 게임판을 입력받은 다음, 게임판에서 열린 칸(x표시)마다 주변에 지뢰가 몇 개 있는지 카운트하고 그 값을 따로 배열에 저장하여 출력한다. 하지만 "지뢰가 있는 칸이 열렸다면 지뢰가 있는 모든 칸이 별표(*)로 표시되어야 한다." 그래서 열린 칸이 지뢰인 경우를 따로 체크하여 이후 정답을 출력하기 전 지뢰가 있는 모든 칸을 별표로 표시하고 출력해야 한다. 코드..

[백준] 2578번 : 빙고 - 자바[Java]

https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 풀이 5X5 배열을 만들고 배열에 값을 채워 넣은 다음, 숫자를 입력할 때마다 모든 행/열/대각선을 탐색하여 빙고가 되는지 체크한다. 3줄 빙고가 완성된다면 그 위치를 answer에 저장하고, 모든 입력이 끝난 다음 출력한다. 전역 변수 및 지역 변수 설명 int[5][5] arr : 빙고 배열 boolean[5][5] flag : 사회자가 부른 수가 빙고에 있으면 해당 위치를 true로 변경 이미 빙고가 된 ..

article thumbnail
[백준] 14476번 : 소가 길을 건너간 이유 1 - 자바[Java]

https://www.acmicpc.net/problem/14467 14467번: 소가 길을 건너간 이유 1 3번 소는 위치 1, 0, 1에서 관찰되었으므로 길을 최소 두 번 건넜음을 확인할 수 있다. 4번 소도 길을 한 번 건넜으며, 나머지 소는 길을 건넌 기록이 확인되지 않는다. www.acmicpc.net 풀이 매우 간단한 문제다. HashMap을 사용하여 소의 번호와 위치를 저장하고, map의 메서드를 사용하여 문제를 해결한다. 이미 있는 소의 경우, 소의 원래 위치와 현재 위치가 다른 경우 cnt에 1을 더하고, map.put() 메서드를 사용하여 현재 key에 해당하는 map의 엔트리의 값을 변경한다. 새로운 소의 경우, map에 (번호, 현재 위치)를 추가한다. 코드 import java.i..

이전 블로그의 알고리즘 문제 풀이 모음

이전에 사용했던 velog 블로그에서 백준이나 프로그래머스 문제를 풀면서 문제의 풀이와 코드를 정리하였고, 티스토리에서도 계속 알고리즘 문제를 풀면서 문제의 풀이와 코드를 업로드 할 계획이다. 이전 블로그의 코딩 문제 풀이 모음 코테(86) 백준(53) 프로그래머스(21) 그래프(11) BFS(10) 구현(10) DFS(9) 백트래킹(8) 브루트 포스(5) 정렬(3) DP(2) 스택(1)