1) 생각 [SW Expert] 1226. [S/W 문제해결 기본] 7일차 - 미로1 문제와 99.9999999998% 똑같다. 처음 생각똑같은 미로 찾기다. 이전 문제의 16으로 짜여있는 배열의 크기를 100으로 바꿔주었다. 2) 방안 1) 배열의 크기와 반복문의 범위를 100으로 수정하였다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import ..
1) 생각 미로가 주어진다 출발점은 2, 도착점은 3으로 표현되어 있을 때, 도착점까지 갈 수 있는지를 판단하여라. 처음 생각미로 탐색이므로 BFS를 통해서 풀이를 하였다. 다음 생각16 x 16으로 크기가 작게 정해져 있으므로 DFS를 이용해 풀어도 빠르게 풀릴 것 같다. 2) 방안 1) BFS를 사용해서 풀이를 하였다.▶x와 y의 좌표를 class를 따로 만들어 사용하지 않고 Queue 2번 넣어줘서 풀이를 해보았다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import java.io.BufferedReader;import java.io.IOExcept..
1) 생각 양방향 그래프에서 DFS(깊이 우선 탐색)과 BFS(넓이 우선 탐색)을 진행하여라. 처음 생각DFS를 Stack으로 구현을 해보았고 재귀를 통해서도 구현을 하였다. 다음 생각BFS를 Queue를 사용하여 구현을 하였다. 다다음 생각DFS를 수행한 후 방문 배열 초기화를 해주지 않아 BFS값이 제대로 출력이 안됐었다.2) 방안 1) DFS를 수행한 다음 BFS를 수행하기전 방문배열 초기화를 해주었다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475import java.io.BufferedRea..
1) 생각 주어진 2개의 10만 자리의 bit를 가지고 bit연산 출력을 하여라. 처음 생각java에는 딱히 bit를 받을 만한게 없는것 같으므로(모르는것일 가능성이 높다.) 배열을 사용해서 String으로 받은 뒤 한자리 씩 배열에 넣어주었다. 다음 생각별 생각없이 ~A와 ~B를 비트 연산 ~ 처리를 해줬더니 - 값이 나왔다. 보수가 적용된 것이다. 2) 방안 1) - 값이 나오는 것을 방지하면서 원래 bit의 0과 1을 flip하기 위해서 1과의 ^(or) 연산을 사용하였다. or 연산은 01과 10일 경우 1 그외의 00 11은 0의 결과를 나타내므로 원본 bit를 뒤집은 효과를 낼 수 있다. 12345678910111213141516171819202122232425262728293031323334..
1) 생각 수열의 개수 N과 숫자 K가 주어진다. 수열에서 수를 합 하였을 때, K가 되는 경우의 수를 구하여라. 처음 생각DFS를 통해 수열에서 그 숫자를 포함하고 가는경우와 포함하고 가지 않는 경우로 나누어 탐색을 진행한다.▶재귀를 통해 구현하여 가지치기를 잘 해주어야 한다. ▶이 문제의 경우 숫자의 합이 k에 도달 했을 때, Index 변수가 N에 도달하였을 때, 마지막으로 숫자의 합이 k를 넘어 섰을 경우 return 해주었다. 2) 방안 1) 재귀를 통해 구현을 하였다.▶반복문의 경우 충분히 큰 숫자까지 돌 수 있지만 재귀의 경우에는 10만 번 정도 이상을 들어가게 되면 스택 오버플로우 에러가 나게된다. 따라서 재귀를 사용한 탐색의 경우 항상 가지치기를 잘해 주어야한다.▶이러한 문제는 재귀를 통..
1) 생각 N x M의 크기의 체스판을 만들 판이 주어진다 판들은 1x1의 크기로 W(흰색)과 B(검은색)으로만 이루어져있다.판에서 8 x 8을 떼어내어 체스판을 만들 때, 최소한으로 바꿔야하는 W와 B의 개수를 구하여라. 처음 생각8 x 8을 분리하여 그 판의 왼쪽 맨 위에서부터 다음 판과 색이 같은지 판단하여 다르다면 임시변수 temp에 다음 판의 색을 저장하고 있고,색이 같다면 카운트 변수를 +1 시켜준 후 temp의 색을 바꿔준다.(BBB 일경우 temp의 색을 바꿔주지 않으면 앞 뒤로 중복 카운트가 된다.)▶시뮬레이션 유형의 문제는 일단 문제가 길기 때문에 문제를 제대로 보지 못할 아니 않을 가능성이 크다. 이 문제의 경우에는 문제속에 힌트를 많이 주고 있다.▶문제의 마지막에 큰 힌트가 주어져있..
1) 생각 올림픽 종목을 추가하기 위한 투표를 한다. 올림픽 종목과 투표위원회가 각각 주어진다.올림픽 종목은 재미있는 순서대로 나열되어있고 숫자는 해당 index 올림픽의 개최 비용을 나타낸다.투표위원회의 주어지는 각각의 숫자는 그 개최비용 이하에 투표한다. 이 때, 가장 재미있는 종목에 투표한다. 처음 생각각각을 배열로 저장한 뒤 투표위원회에서 하나를 꺼내어 올림픽 종목과 앞에서 부터 비교를 한다.▶올림픽 종목은 재미순으로 정렬되어 있기 때문에 앞에서부터 비교를 하면서 해당 투표위원회의 비용 이하의 종목이 나오면 결과 배열의 해당 종목의 인덱스를 +1 시켜준 뒤 바로 반복문을 종료한다. 2) 방안 1) 모든 케이스에 대해서 가장 많은 표를 획득한 경기는 1경기만 존재한다.▶ 조건 문을 처리해 줄 때, ..
1) 생각 시험 장의 수와 각 시험장의 인원 그리고 대표감독이 관리할 수 있는 학생수 B와 부 감독이 관리 할 수 있는 학생수 C를 준다. 대표감독은 각 시험장마다 1명만 있을 수 있고 부 감독은 여러명 있을 수 있다. 이때 필요한 최소의 감독수를 구하여라. 처음 생각백준에 있는 삼성 SW 역량 테스트 기출문제이다. 정답 비율이 23%인데 풀고나니 왜 23%인지를 잘 모르겠다.▶ 범위가 문제였다고해도 50%는 거뜬히 넘어야 될 것같다. 백준 서버에서 잠시동안 채점 오류가 있었던게 아닌지 조심스럽게 생각해본다. 다음 생각대표감독은 1명 있을 수 있고 부 감독은 여러명 있을 수 있다. 대표 감독은 무조건 있어야 하므로 무조건 처음에 계산을 해준다. 다다음 생각대표 감독이 처리할 수 있는 학생수를 제외하고 나..
1) 생각 입력은 주어지지 않는다 "문제의 정답"을 출력해라. 처음 생각백준 문제들은 간혹가다 이렇게 재밌는 문제들이 섞여있어서 도전하는 맛?? 이 있는것 같다. 2) 방안 1) 문제 그대로 "문제의 정답"을 출력하였다. 12345678import java.io.IOException; public class Main{ static int[] arr = new int[21]; public static void main(String[] args) throws IOException{ System.out.println("문제의 정답"); }}Colored by Color Scriptercs
1) 생각 주어진 명령대로 집합을 만들고 CHECK 명령어가 들어오면 해당 숫자가 있으면 1 없으면 0을 출력해라. 처음 생각중복으로 들어와도 1번으로 처리되기 때문에 HashSet 자료구조를 사용하여 구현했었다. 2) 방안 1) 숫자가 20으로 제한되어 있고, 모두 삭제하는 명령어와 모두 집어넣는 명령어가 있기 때문에 배열을 만들어 Arrays.fill() 메소드를 이용하여 HashSet을 사용했을 때보다 시간을 절약하였다. 2) 풀이를 살펴보니 비트마스크를 사용하신 분들이 있었는데 이경우는 더 빠르고 효율적으로 돌아갈 것 같다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344import java.io.Buf..
- Total
- Today
- Yesterday