본문 바로가기

알고리즘

(12)
1260_JAVA_DFS와 BFS 코딩테스트에 단골으로 나온다는 유명한 DFS, BFS의 가장 기본적인 문제다. DFS 는 한 놈만 팬다.(왼쪽) BFS는 여러 놈을 팬다. (오른쪽) package juhwan; import java.util.*; public class BOJ_1260 { static int n; // 정점 개수 static int m; // 간선 개수 static int start; // 시작점 static int[][] check; //간선 연결상태 확인 static boolean[] checked; // 확인 여부 public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); m = sc.nextInt();..
Programmers_로또의 최고순위와 최저순위_Level1 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 순위당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0, 31 25라고 가정해보겠습니다. 당첨 번호 ..
Programmers_같은숫자는싫어_Level1 최근 Programmers 사이트를 이용하고 있다. 백준은 연습문제 느낌이라면 Programmers는 모의고사 같은 느낌이다. 문제 : 같은 숫자는 싫어 문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return ..
2231_JAVA_분해합 브루트포스에 대한 두번째 문제다. 어렵지 않았다. 시간도 오래 걸리지 않았다. package juhwan; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class BOJ_2231 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); ArrayList arr = ne..
2798_JAVA_블랙잭 단계별 풀기 - 브루트포스에 있는 첫번째 문제다. 나도 블랙잭 좋아하는데 문제를 풀다보니까 또 하러가고싶다. 크게 어렵지 않았는데 중간에 if문을 야무지게 써야 풀린다. 처음에는 안 풀려서 여러가지 시도를 하다가 다시 차근차근 생각해보니까 금방 풀었다. 역시 스스로 푸는 문제는 기분이 좋다. 쌓여가는 내 백준 깃허브를 보면 뿌듯하다. ㅎ
1193_JAVA_분수찾기 동민님이 갑자기 내준 문제다. 단계별 풀기할 때 꽤 초반에 풀었던 문제로 기억하는데 그때는 그냥 인터넷 풀이를 보고 따라쳤던 기억이 있다. 그래도 그 때보다는 좋아졌는지 이번에는 스스로 해결했다. 검정 바탕이 이번에 푼 풀이이고 흰 화면이 2달 전에 풀었던 풀이다. 시간도 줄고 메모리도 줄었다. 이번에 풀 때 완전 새로운 문제같았다. 풀이를 보고 따라 쓰는 공부는 크게 도움이 되지 않는다는 걸 한번 더 깨달을 수 있었다.
1009_JAVA_분산처리 오늘은 동민님이 내준 분산처리 문제다. 너무 길게 코드를 작성해서 가독성이 떨어진다. 앞으로 이렇게 경우를 나누는 것 보다는 반복문이나 다른 기능들을 사용해서 하는 쪽으로 해야겠다. 뭐 어쨌든 맞았다 ㅎ 전보다는 많이 수월하게 풀고 있는 것 같아서 기분이 좀 좋다.
2563_JAVA_색종이 오늘은 단계별풀기 가 아니라 도율님이 추천해준 문제를 풀었다. 많은 것을 알 수 있었던 문제다. 처음에 for문 밖에 StringTokenizer를 사용해서 계속 입력 오류가 떴었다. 이후에 리팩토링을 통해서 코드를 좀 더 간결하게 만들었다. array를 도는 2중for문이 2개 있는데 이를 1개로 합치고 최대한 간단하게 바꿨다. 쉽지 않았지만 내 손으로 해결해서 뿌듯하다.