1) 생각 앞 뒤로 똑같은 문자를 팰린드롬이라고 한다. 이때 치트키 문자인 "*"는 어떤게 들어가도 상관이 없다.문자가 주어질 때, 그 문자가 팰린드롬이 될 수 있는지 판단해라. 첫 번째 생각앞 뒤가 똑같아야 하므로 문자열의 앞에서부터 그리고 뒤에서부터를 비교한다.만약 해당 Index 짝이 다르다면 그 짝중에 "*"가 있는지 판단해본다. 2) 방안 1) 반복문을 통해 변수 j를 늘리면서 앞쪽에서 진행하는 Index를 얻고, 해당 문자열 길이 - j - 1을 통해서 뒤에서 진행하는 Index를 얻어 비교한다. 2) 다르다면 우선 flag를 false로 바꾼다. 3) 해당 Index의 짝이 다르면 둘 중 *가 있는지 파악하여 있다면 flag를 다시 true로 바꿔준다. 123456789101112131415..
1) 생각 오셀로 게임을 시작한다. 초기 조건은 N x N에 상관없이 다음과 같은 중앙 4개의 형태로 동일하다.이제 오셀로를 두는 좌표를 준다. 이 좌표를 항상 둘 수있는 경우를 준다. 주어진 좌표들을 모두 두었을 때 흑과 백의 개수를 출력해라. 첫 번째 생각돌을 하나 두었을 때, (위 아래) (좌 우) (대각 4방향)을 판단해 주어야한다. 두 번째 생각예제의 답이 틀리게 나와 확인해보니 당연히 (x,y)로 주어질 줄 알았지만 (y,x) 로 주어지고 있었다.2) 방안 1) 모든 경우의 수를 다 탐색 해주었다.2) y와 x를 바꿔주었고, 배열의 크기를 N개로 생성하여서 x,y 각각 -1을 해주었다.3) 오셀로를 놓았을 때, 뒤집는 과정에서 빈 공간 체크를 하지 않아서 예제는 답이 잘 나왔지만 제출시에는 틀..
1) 생각 단어가 주어지고 '-'이 들어갈 Index가 주어졌을 때, 해당 Index에 '-'을 넣은 결과를 출력하라. 첫 번째 생각기존에 있던 문자열에 '-'을 넣게되면 기존 단어들의 Index가 변한다. 두 번째 생각'-'을 넣어줄 때마다 String을 생성하면 성능이 좋지 않을 것이다. 2) 방안 1) '-'의 위치 배열을 정렬하여 맨 뒤 Index 부터 '-'을 넣어주면 단어의 Index에 신경쓰지 않고 '-'을 넣어줄 수 있다.2) 주어진 문자열을 List로 만들어 '-'의 삽입을 용이하게 하였다. 123456789101112131415161718192021222324252627282930313233343536import java.io.IOException;import java.util.Arra..
1) 생각 문자가 주어지면 그 문자를 가지고 모양을 만들어라. Ex) APPLE 일 경우 첫 번째 생각문자를 가지고 만드는 패턴이 정형화되어있고, 세로의 길이는 무조건 5줄이다. 두 번째 생각(1,5) 줄과 (2,4) 줄이 쌍이므로 두 줄중 한 줄을 만든뒤 복사해주면 된다. 2) 방안 한 줄 한 줄 패턴에 맞춰서 만들어 준다. 중앙 줄을 미리 만들어주면 나머지는 중앙 줄과 비교해서 만들어 줄 수 있다.(2,4) 줄은 중앙 줄에서 '.'이 나오는 구간은 '#'이고 나머지는 '.'으로 표현된다.(1,5) 줄은 중앙 줄에서 문자가 나오는 구간은 '#'이고 나머지는 '.'으로 표현된다. 1234567891011121314151617181920212223242526272829303132333435363738394..
1) 생각 사람들은 대중의 흐름에 의해 움직인다! i 번째의 사람들은 i-1명이 기립박수를 치고 있어야지 기립박수를 같이 쳐준다. 문자열이 주어졌을 때 모든 사람이 기립박수를 치게하려면 몇 명의 알바를 고용해야할까? 첫 번째 생각i 번째 사람은 i-1 명이 박수를 치고 있어야 한다고 적혀있지만 배열로 따질 경우 Index가 0 부터 시작하기 때문에 Index i 번째 사람은 i명 이상이 박수를 치고 있어야지만 기립 박수를 치기 시작한다. 두 번째 생각예시가 모두 0과 1로 주어졌지만 0~9 까지의 숫자가 나올 수 있다.2) 방안 기립 박수를 치고있는 관객 수를 계속 더해가면서 현재 박수를 치고있는 사람 수와 Index 번호와 크기를 비교하여 현재 박수를 치고있는 사람 수가 적을경우 해당 Index 번호만..
1) 생각 A,B의 빵이 있으며 C금액을 가지고 빵을 사고 싶다.. 그것도 종류에 상관없이 제일 많이!C 금액을 가지고 있을 때 가장 많은 빵을 사고싶다면 가장 싼 빵을 많이 사면 될 것이다. 2) 방안 A,B 중 싼 빵을 찾아 C 금액으로 나눠준다. 12345678910111213141516171819import java.io.IOException;import java.util.Scanner; public class Solution { public static void main(String[] args) throws IOException{ Scanner sc = new Scanner(System.in); int tc = sc.nextInt(); for(int i=1;iB?B:A; System.out.p..
1) 생각 제목의 부제가 S/W 문제해결 기본 1일차이다. 이름에 알맞게 시간초는 20초 제한을 주고있으며, TestCase도 모두 공개하고 있다.현재 빌딩에서 조망권이 방해 받을 수 있는 빌딩은 왼쪽으로 2개 오른쪽으로 2개이다. 맨 왼쪽과 맨 오른쪽 2칸은 빌딩이 없다.따라서 빌딩의 개수 N개에서 4개를 더하여도 되지만 헷갈리니 넉넉히 5개를 더하고 탐색은 Index 2부터 N까지 진행하였다. 2) 방안 현재 빌딩에서 좌로 두개 우로 두개와 크기를 비교하여 만약 현재 빌딩이 크다면(하나라도 현재 빌딩이 작다면 조망권이 좋지 않으므로 다음 빌딩을 탐색한다) 그 차이값을 더하면서 진행하였다.빌딩 크기의 입력이 한 줄로 들어오고 공백으로 구분지어 지고있다. N의 크기가 최대 1000 이므로 Scanner ..
1) 생각 첫 번째 생각 주어진 시간이 30초이고 A의 길이도 10000 이하이므로 A를 처음부터 쭉 훝으면서 B와 첫글자가 같으면 그 뒤로 B가 나오는지 확인하면서 B가 나온다면 반복문 변수를 B의 길이 -1 만큼 해준뒤 다시 검색하는 방식을 생각해보았다. 예제로 주어진 상황은 통과했지만 답안을 제출하니 'Runtime error'가 떳다. 생각을 해보니 만약 A의 마지막 글자가 B의 첫글자와 같다면 조건문이 만족되므로 안으로 들어가서 해당 index에서 B의 길이만큼 A를 자른 문자열이 B와 같은지 판단할 때 A의 길이를 벗어나므로 오류가 나게된 것이다. 두 번째 생각 첫 번째를 변형해도 풀 수 있겠지만 다른 방식으로 접근을 생각해보았다. 문자열 메소드 중 indexOf라는 메소드를 이용하여 첫 번째..
1) 생각 주어진 칼로리의 값을 넘지 않도록 더해가면서 맛의 만족도가 최대가 되는 값을 구하자. 재료의 수가 최대 20개로 많지 않으므로 주어진 시간인 Java 8초를 생각하면 모든 조건을 따져봐돠 충분히 풀 수 있을것이다. 2) 방안 재귀를 통한 DFS 방식을 통해 쭉욱 살펴보면서 그 값이 더해졌을 경우, 더해지지 않았을 경우를 따지면 된다. 12345678910111213141516171819202122232425262728293031323334353637383940414243import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.u..
- Total
- Today
- Yesterday