본문 바로가기

Algorithm

(25)
[Java] 백준 9366번 : 삼각형 분류 1. 문제 https://www.acmicpc.net/problem/9366 9366번: 삼각형 분류 입력의 첫 줄에는 테스트케이스의 개수 T(1
[Java] 백준 2309번 : 일곱 난쟁이 1. 문제 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 2. 풀이 - 브루트 포스는 완전 탐색 알고리즘으로 모든 경우의 수를 구하는 알고리즘이다. 우선, 입력하는 값을 리스트에 넣고 안에 값을 모두 더한다. 오름차순 출력하기 위해 Collections.sort를 활용하여 정렬을 한다. 모든 경우의 수를 대입하기 위해 이중 for 문을 활용하고, if 문에 모두 더한 값 (sum) - i번째 - j번째 값이 == 100과 같은지 확인한다. (모든 값을..
[Java] 백준 2495번 : 연속구간 1. 문제 https://www.acmicpc.net/problem/2495 2495번: 연속구간 여덟 자리의 양의 정수가 주어질 때, 그 안에서 연속하여 같은 숫자가 나오는 것이 없으면 1을 출력하고, 있으면 같은 숫자가 연속해서 나오는 구간 중 가장 긴 것의 길이를 출력하는 프로그램을 www.acmicpc.net 2. 풀이 - 이 문제의 핵심은 이전 문자를 기억하고, 이전 문자와 같은 값이 연속적으로 이루어져 있거나, 같은 문자 중에 제일 많이 나온 값을 출력하는 게 핵심이다.tmp라는 변수에 charAt(0) index 0번째 값을 저장해 놓는다. 이전 문자와 비교하기 위하여 이중 for 문에서 index 1번째 위치부터 하나씩 쪼개어 준다. 비교하여 처음에 저장한 문자와 같으면 count 변수에 ..
[Java] 백준 10798번 : 세로읽기 ver.2 1. 문제 https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 2. 풀이 - 이 문제는 앞 전에 char 형태의 배열을 활용하여 풀었던 문제이다. 친구가 int 형 배열로 바꾸어 구현해보라고 하여 다시 풀어본다. char 형태 배열은 초기값이 '\0'으로 정해져 있지만 int 는 초기값이 0이다. 허나 예제 입력에 0이 입력될 수 있기 때문에 Arrays.fill 메소드를 사용하여 배열에 전부 10이란 값을 초기값으로 지정해주었다. char..
[Java] 백준 10804번 : 카드 역배치 1. 문제 https://www.acmicpc.net/problem/10804 10804번: 카드 역배치 1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. www.acmicpc.net 2. 풀이 문제에 카드 20장이라고 정해주었으므로 20칸을 가진 int형 배열을 만든다. 2개씩 10개의 입력이 주어진다. (인덱스와 맞추기 위해서 -1) 변수를 하나 만들어 주고 입력값을 서로 빼준다. (start변수가 end변수보다 숫자가 작으면 마이너스 숫자가 나올 수 있어 Math.abs() 음수를 양수로 바꾸어 주는 메소드를 활용하고, 나온 숫자만큼 자리 바꿔주기 위하여 나누기 2를 해주는게 핵심이다. 3. 코..
[Java] 백준 10798번 : 세로읽기 1. 문제 https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 2. 풀이 char타입의 세로 5줄, 가로 15줄의 2차원 배열을 만든다. (char 타입의 2차원 배열의 초기값은 '\0'이다. 문자열을 5번 입력받는다. 입력받은 문자열을 j만큼 한 문자씩 쪼개어 순서대로 넣어준다. 출력을 위해 for 문을 반대로 15만큼 반복하게 만든다. 출력을 할 조건에 인덱스 내부가 공백 또는 null 문자 일 경우 continue로 계속 반복한다. 3..
[Java] 백준 1316번 : 그룹 단어 체커 1. 문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 2. 풀이 - 문제 핵심은 입력에 주어진 문자가 연속적으로 들어오는지 확인 이전에 들어왔던 문자가 같은지가 핵심이다. - boolean 배열을 활용하여 풀이 테스트 케이스가 주어지고 for문 안에 문자열을 입력한다. 각 문자열 마다 확인을 해주어야 함으로써 배열 초기화를 위하여 boolean 변수를 담은 배열을 for문 안에 생성한다. (알파벳 개수에 비..
[Java] 백준 1159번 : 농구 경기 1. 문제 https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 2. 풀이 소문자 알파벳 비교를 하기 위하여 26칸(알파벳 개수)을 가지고 있는 배열을 생성한다. 테스터 케이스 입력 하고 각 입력 앞에 성 가져오기 위한 for문을 생성하고 안에 ch라는 변수에 charAt(0) - 97을 하여 하나씩 쪼개어 변수에 담아준다. (아스키코드표 소문자 a = 97, 소문자 기준으로 빼면 앞에 알파벳이 무엇인지 알 수 있기 위함이다.) ch변수에 담은 값을 인덱스..