✔ 회문2 [SWEA 1216] 문제 분석하기 회문의 길이를 1부터 증가시키도록 함 가로와 세로에서 회문의 길이만큼 이동하면서 대칭될 경우 회문이 존재하므로 이를 최대 회문의 길이로 갱신 손으로 풀어보기 100 x 100 크기의 배열에 글자를 저장 회문의 길이를 1부터 시작하여 증가시키도록 함 가로와 세로를 회문의 길이만큼 이동하면서 대칭될 경우 최대 회문의 길이를 현재 회문의 길이로 갱신 최대 회문의 길이 반환 슈도코드 작성하기 T(테스트 케이스 수) = 10 for(T만큼) { t(테스트 번호) arr(글자 저장 2차원 배열 (8 x 8 만큼)) for(i -> arr.length만큼) { for (j -> arr.length만큼) { arr[i][j] = 글자 저장 } } answer(최대 회문의 ..
✔ 회문1 [SWEA 1215] 문제 분석하기 가로와 세로에서 회문의 길이만큼 이동하면서 대칭될 경우 회문이므로 갯수를 증가 손으로 풀어보기 8 x 8 크기의 배열에 글자를 저장 가로와 세로를 회문의 길이만큼 이동하면서 대칭될 경우 회문 갯수 증가 갯수 반환 슈도코드 작성하기 T(테스트 케이스 수) = 10 for(T만큼) { n(찾아야 하는 회문의 길이) arr(글자 저장 2차원 배열 (8 x 8 만큼)) for(i -> arr.length만큼) { for (j -> arr.length만큼) { arr[i][j] = 글자 저장 } } count(횟수) for (i -> arr.length만큼) { for (j -> arr.length - n + 1만큼) { sb(n 길이만큼의 문자) for (k -> ..
✔ String [SWEA 1213] 문제 분석하기 substring을 사용하여 영어 문장을 문자열의 길이만큼 잘라 비교하여 동일할 경우 횟수 증가 손으로 풀어보기 영어 문장을 문자열의 길이만큼 잘라가며 문자열과 동일할 경우 횟수 증가 횟수 반환 슈도코드 작성하기 T(테스트 케이스 수) = 10 for(T만큼) { t(테스트 번호) sstring = 문자열 저장 sentence = 영어 문장 저장 count(횟수) for(i -> 영어 문장의 길이 - 문자열의 길이까지) { if(sstring과 sentence.substring(i, i + 문자열의 길이)가 같다면) { count 증가 } } #T와 count 반환 } 코드 구현하기 /** * 1213) String */ public class D001..
✔ Ladder2 [SWEA 1211] 문제 분석하기 배열에 숫자를 저장한 후 도착점들에서 시작을 하여 가장 적은 횟수로 시작점에 도달할 수 있는지를 찾음 손으로 풀어보기 100 x 100 크기의 2차원 배열에 숫자 저장 목적지들에서 위로 올라가며 시작점을 찾음 왼쪽이나 오른쪽으로 움직일 수 있다면 이동 왼쪽이나 오른쪽으로 이동할 수 없다면 위로 이동 이동한 후 방문 배열을 1로 변경 이동 횟수를 비교하여 더 적은 횟수로 갱신될 때 시작점도 함께 갱신 시작점 반환 슈도코드 작성하기 T(테스트 케이스 수) = 10 for(T만큼) { t(테스트 번호) ladder(사다리 숫자 저장 2차원 배열 (100 x 100 만큼)) for(i -> ladder.lengthr만큼) { for (j -> ladder.l..
✔ Ladder1 [SWEA 1210] 문제 분석하기 배열에 숫자를 저장한 후 목적지부터 시작하여 위로 올라가며 시작점에 도달할 수 있는지 확인 손으로 풀어보기 100 x 100 크기의 2차원 배열에 숫자 저장 목적지에서 위로 올라가며 시작점을 찾음 왼쪽이나 오른쪽으로 움직일 수 있다면 이동 왼쪽이나 오른쪽으로 움직일 수 없다면 위로 이동 위로 이동하면서 갔던 곳을 다시 가지 않도록 0으로 변경 x축의 인덱스가 0이 될 때까지 반복 슈도코드 작성하기 T(테스트 케이스 수) = 10 for(T만큼) { t(테스트 번호) ladder(사다리 숫자 저장 2차원 배열 (100 x 100 만큼)) x, y(도착 위치) for(i -> ladder.lengthr만큼) { for (j -> ladder.length만..
✔ Sum [프로그래머스 1209] 문제 분석하기 각 행의 합, 각 열의 합, 양쪽 대각선의 합 총 4개의 합을 구하여 최대값을 구함 손으로 풀어보기 100 x 100 크기의 2차원 배열에 숫자를 저장 i와 j를 증가시키면서 각 행의 합, 각 열의 합, 양쪽 대각선의 합을 구하여 최댓값과 비교 및 갱신 각 행의 합 = sum1[i][j]를 증가시키면서 각 행의 합을 구해 최댓값과 비교 및 갱신 각 열의 합 = sum2[j][i]를 증가시키면서 각 열의 합을 구해 최댓값과 비교 및 갱신 양쪽 대각선의 합 = sum3[i][i], sum4[i][99 - i]를 증가시키면서 값을 구해 최댓값과 비교 및 갱신 최댓값을 반환 슈도코드 작성하기 T(테스트 케이스 수) = 10 for(T만큼) { t(테스트 번호) ..
✔ Flatten [SWEA 1208] 문제 분석하기 상자들을 저장한 후 오름차순으로 정렬한 후 가장 낮은 높이의 상자 갯수에 + 1, 가장 가장 높은 높이의 상자 갯수를 -1 해주기는 것을 덤프만큼 반복 (또는 시간 단축을 위해 Heap을 사용해서 최댓값, 최솟값 우선순위 큐를 만들어서 해결) 손으로 풀어보기 100만큼의 크기 배열에 위치의 상자 높이를 저장 덤프만큼 반복하며 상자의 높이들을 오름차순 정렬한 후 가장 낮은 높이의 상자 갯수에 + 1, 가장 가장 높은 높이의 상자 갯수를 -1 가장 가장 높은 높이의 상자 갯수 - 가장 낮은 높이의 상자 갯수 반환 슈도코드 작성하기 T(테스트 케이스 수) = 10 for(T만큼) { N(덤프의 개수) box(박스 높이 저장 배열 (100만큼)) for(i ..
✔ View [SWEA 1206] 문제 분석하기 왼쪽 두 칸, 오른쪽 두 칸의 건물 중 가장 큰 높이를 구한 후, 그 값보다 현재 건물의 높이가 더 클 때 조망권을 확보할 수 있음 손으로 풀어보기 건물의 개수만큼 배열에 건물을 저장 현재 건물의 왼쪽 두 칸, 오른쪽 두 칸 중 가장 큰 건물의 높이 값을 구함 현재 건물의 높이가 가장 큰 높이의 값보다 크다면 조망권을 확보할 수 있으므로 가장 큰 높이의 값보다 큰만큼 조망권을 획득할 수 있는 세대 수 증가 세대 수 반환 슈도코드 작성하기 T(테스트 케이스 수) = 10 for(T만큼) { N(건물의 개수) building(건물 높이 저장 배열 (N만큼)) for(i -> n만큼) { building[i] = 건물의 높이 } count(조망권 확보 세대 수)..