코드스테이츠 Day27
public class Solution {
public String readVertically(String[] arr) {
// TODO: 각 요소의 첫 번째 인덱스, 두번째 인덱스를 차례로 이어 붙이기.
//빈 배열인 경우
if(arr.length==0) return "";
String result ="";
int max = 0; // 가장 긴 요소 길이 찾기.
for(int i=0; i<arr.length; i++){
if(max < arr[i].length()) max = arr[i].length();
}
for(int i=0; i<max; i++){
for(int j=0; j<arr.length; j++){
if(arr[j].length()<=i) continue; // 요소의 길이보다 인덱스 값이 크면 다음 요소로 넘어가기.
else result += arr[j].charAt(i); // 각 요소의 인덱스를 차례로 결과에 집어넣기.
}
}
return result;
}
}
public class Solution {
public boolean superIncreasing(int[] arr) {
// TODO: 요소 하나를 더한다. 다음 요소가 합보다 크면 트루. 아니면 펄스. 그리고 또 더한다.
int sum = arr[0];
for(int i=1; i<arr.length; i++){
if(sum < arr[i]) { // 합보다 크면 합에 요소 더하고 넘어감.
sum += arr[i];
if(i==arr.length-1) return true; // 마지막 요소까지 충족하면 트루 리턴.
continue;
}
else break;
}
return false;
}
}
public class Solution {
public Integer boardGame(int[][] board, String operation) {
// borad.length 보다 밖에 나가면 널.
// u 행을 +1, d 행을 -1, l 열을 -1, r 열을 +1
// 자리를 옮겼을 때, 1이 있으면 1을 더 한다.
int sum = 0;
int x = 0;
int y = 0;
for(int i=0; i<operation.length(); i++){
if(operation.charAt(i)=='U') x -=1;
if(operation.charAt(i)=='D') x +=1;
if(operation.charAt(i)=='L') y -=1;
if(operation.charAt(i)=='R') y +=1;
if(x<0 || x>=board.length || y<0 || y>=board.length) return null;
if(board[x][y]==1) sum+=1;
}
return sum;
}
}
<느낀 점>
확실히 나는 재귀함수에 약하다는 것을 오늘 아침에 느꼈다.
재귀함수 공부 좀 다시 해야할 듯,,
연습문제는 총 4문제였는데, 2,3번은 풀었고, 1번은 문제를 잘못 읽어서 못 풀었고, 4번은 걍 어려워서 못 풀었다.
DP개념이 좀 낯설다. 풀이 영상 2번 보니까 뭔지는 알긴 하겠는데..
다음주 월요일이면 알고리즘 섹션이 끝난다. 물론 데일리 코딩은 계속된다.
문제 푸는 건 풀릴 때의 쾌감이 있어서 즐겁다.
고등학교 때 수능 공부하는 기분. 공부는 싫어하지 않음.
알고리즘보다 앞으로 배울 스프링이 더 어려울 것 같아서 걱정된다.
뭐,, 걱정은 미뤄두고 눈 앞에 해야할 일들을 차곡차곡 해나가자.
복습 시간을 너무 충분히 가지지 않아서 약간 겨우 진도를 따라가는 느낌이 있긴한데.. 미래의 나 화이팅⭐️