생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d3/Q7728.java 숫자가 주어진다 얼마나 다양한 숫자로 이루어져있는지 개수를 출력하여라. 처음 생각문자열로 주어지는 숫자의 각 자리수를 다룰수 있는지를 보는 문제인것 같다. 다음 생각문자열의 각자리를 charAt을 통해 읽으면서 해당 값은 아스키코드이므로 '0'을 빼주어 원래 숫자를 얻을 수 있도록 하였다.▶ 해당 숫자가 이미 사용된 숫자인지를 파악하기위해서 int[10] 즉, 0~9까지 체크할 수 있는 배열을 만들어 문자열에서 해당 숫자가 이미 사용되어있는지를 체크해주었다.▶ 이경우 숫자의 체크를 위해 배열값을 바꿔주어야하는데 배열을 매번 초기화하면 배열이 클경우 효율이 떨..
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d3/Q7732.java 시작 시간과 끝나는 시간의 시간차를 xx:xx:xx 형식으로 나타내어라. 처음 생각처음에는 문자열을 어떻게 분리 시킬까를 생각해보았다. 입력이 정해진 형식으로 들어오기때문에 Index로 접근해도 괜찮지만 String Class의 split 사용하면 좀 더 편하게 시:분:초를 분리시킬 수 있다.▶ split(":")을 사용하면 :로 문자열을 분리해준뒤 해당값을 배열로 return 해준다. 다음 생각그 다음으로는 시간차를 출력하는 것이므로 분리된 시, 분, 초를 각 단위에 맞게 [끝나는 시간 - 처음 시간]으로 계산을 해주었다.▶ 이렇게 끝나는 시간 - 처음 시..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q6593.java 상범이가 빌딩을 탈출할 수 있다면 양식에 맞춰 최단 시간을 출력하고 탈출할 수 없다면 탈출 불가일 때의 문자를 출력하여라. 처음 생각이전에 풀었던 문제인 [백준] 7569번 토마토 와 비슷하게 풀어볼 수 있는 문제이다. 다음 생각여러개의 케이스가 주어지고 입력이 조금 특이하게 라인 단위로 띄워져 있기 때문에 입력을 받을 때 이부분을 조심해야한다. 다다음 생각3차원 적으로 생각을 해야하기에 3차원 배열을 생성해서 길을 찾아갈 수 있도록 해주었다.▶ 다차원 배열은 메모리를 많이 잡아먹기 때문에 따로 visited 배열을 만들어 주지않고, 원본 배열을 갈 수..
[Java] 배열로 Queue를 구현해보자!에서 배열을 사용해 다른 자료구조(Queue) 처럼 이용할 수 있었습니다.Stack도 Queue와 마찬가지로 배열로 해당 자료구조 처럼 사용할 수 가 있습니다. 물론 선행으로 배열의 크기를 정해주어야하니 최대로 들어올 자료의 수를 알고있어야 합니다.그럼 배열로 간단하게 Stack을 구현해 보겠습니다. 배열을 이용한 Stack이므로 배열을 만들어 주었습니다. 1int[] stack = new int[100]; Stack은 FILO(First In Last Out) 구조이므로 꺼낼 자료는 항상 top에 있는 자료 입니다. 따라서 꼭대기를 가리킬 top 변수를 선언해 주겠습니다. 1int top = -1; 이제 배열로 만든 stack에 자료를 넣어보겠습니다. 일반적인..
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d4/Q6959.java 양수가 주어진다. 예를들어 1234가 주어지면 연달아 있는 두개의 숫자를 선택한다. 23을 선택했으면 154로 만들 수 있고, 34를 선택했으면 127을 만들 수 있다. 이런식으로 두사람이 숫자를 더해주면서 번갈아 게임을 진행했을 때 1자리 숫자가 남게되면 그 차례 사람이 진다. 이긴 사람을 출력하여라. 처음 생각다양한 풀이가 있을것 같다는 생각이든다. A,B 엘리스와 토끼가 번갈아가면서 게임을 진행하고 최선을 다해 게임에 임한다고 한다.▶ 최선을 다하든 최선을 다하지 않고 게임에 임하든 한 자리가 될 때까지 게임의 진행 횟수는 같다. 다음 생각그래서 처음에..
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d5/Q6782.java 2이상의 정수 N이 주어진다. N은 다음 2개의 규칙으로 바꿀 수 있다. 1) sqrt(N)이 정수라면 N을 sqrt(N)으로 바꿀 수 있다. 2) 그렇지 않다면 N을 N+1로 바꿀 수 있다. 처음 생각처음엔 생각나는데로 풀이를 시작했다. 규칙대로 루트 N 값이 정수라면 N을 루트 N으로 바꿔주고, 그렇지 않다면 1씩 증가시켜주었다.▶ N이 최대 10^12으로 숫자가 상당히 커서 시간 초과가 났다.▶ 루트 N이 정수인지 확인한 방법은 간단하게 다음과 같이 확인하였다. 12double t = Math.sqrt(n);if((int)t == t) {} ▶ Java..
Queue는 FIFO(First In First Out)의 구조를 가진 자료구조로 BFS를 구현할 때 많이 사용이 됩니다. 라이브러리가 있다면 사용하면 간단하게 Queue를 이용할 수 있지만 라이브러리를 쓰지 못하는 곳에서는 Queue를 구현해야만 합니다. 그렇다고 Queue를 구현하기에는 먼가 벅차게 느껴질 때!!! Queue에 들어가는 자료의 개수가 어느정도 일지 대략적으로라도 알 수 있을 경우는 배열을 이용해서 Queue처럼 사용할 수 있습니다! 1int[] queue = new int[100]; 예제로 사용할 queue라는 이름의 배열을 만들었습니다. 이제 queue 배열 안의 index를 가르킬 2개의 변수를 선언하겠습니다. 12int front = -1;int end = -1; front는 q..
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d4/Q6731.java 오델로의 판이 주어진다. 한 칸을 선택하면 해당 칸의 가로줄 세로줄이 모두 뒤집힌다. 초기 상태(모두 흰색)로 만들 경우 뒤집어야하는 최소 칸수를 선택하여라. 처음 생각몇 몇 질문들을 보면서 글을 작성해본다.문제를 보면 우선적으로 드는 생각은 DFS를 이용하는 방법이다. 조합을 만들거나 DFS를 통해 검은돌이나 흰돌을 선택해 나가면서 진행을 하고자하는 생각이 무럭무럭 든다.▶ 하지만 배열이 최대 1000*1000 이다. 따라서 모든 경우를 따져주기에는 시간이 많이 부족하다. 조합을 만들어 주는 경우도 몇 십개만 되도 많은 시간이 걸리므로 모든 경우를 따져주는..
생각Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d4/Q3752.java 시험 점수가 주어진다. 해당 점수들을 가지고 가능한 시험점수들의 개수를 출력하여라. 모든 점수를 선택하지 않은 0점도 시험점수이다. 처음 생각SW Expert의 D3 몇 개 부터 최적화를 상관안하고 풀면 못푸는 문제들이 나오기 시작한다.▶ 글쓴이는 그런걸 잘 못합니다! ▶ 최근 DP에 관한 기초적인 문제를 풀지 못해서 기초 DP 문제들을 풀어보면서 익혀보고 있었는데 마침 문제를 둘러보다가 DP로 풀면 될것 같아서 풀어보았다. 다음 생각주어진 시험 점수를 가지고 가능한 시험점수들을 모두 만들어주어야한다. 일반적인 접근을 했다면 모든 조합을 만들어주어서 점수들을..
- Total
- Today
- Yesterday