20210115-TIL
공부할 내용
- 알고리즘 복습 및 과제
- 운영체제 복습 및 과제
- TiL 정리 및 Git & 블로그 업데이트
오늘 공부한 것 & 배운 내용
알고리즘 복습 및 과제
-
- 싱글은 간단히 구현했는데 더블은 생각보다 어려워서 한참 걸려서 했는데 에러가 많아서 solution을 보면서 다시구현했는데 내가 구현해놓은것에 구멍이 많았다
- 링크드리스트 구조를 익히기에 좋은 예제 였던 것 같다.
-
- 수업에서 배열을 이용한 BinaryTree구현 예제를 알려주셔서 재귀함수를 이용하는 것을 알아서 대부분 쉽게 구현할 수 있었다
- bfs를 통한 탐색이 어려웠는데 기존것과는 다르게 재귀함수로 풀수가 없었기 때문이다
- 동료의 힌트로 queue를 활용하는 것을 알았고 queue에 순서대로 넣은것을 빼가면서 탐색하는 방식으로 문제를 해결할 수 있었다
알고리즘 문제 풀이
가운데글자가져오기
- 풀이
class Solution {
public String solution(String s) {
char[] chars = s.toCharArray();
StringBuilder stringBuilder = new StringBuilder();
if (chars.length % 2 == 0 ) {
int half = chars.length/2;
stringBuilder.append(chars[half-1]);
stringBuilder.append(chars[half]);
} else {
int half = chars.length/2+1;
stringBuilder.append(chars[half-1]);
}
return stringBuilder.toString();
}
}
-
String에 길이가 짝수인지 홀수인지 구해서 출력해주는 간단한 문제였다
return word.substring((word.length()-1) / 2, word.length()/2 + 1);
- 다른사람의 풀이를 보니 한줄로도 해결되는 것 같다..
- subString의 2번째 param은 -1이라는 것을 이용한 풀이었다.
같은숫자는싫어
-
풀이
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
int temp = -1;
List<Integer> list = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
if (arr[i] != temp) {
list.add(arr[i]);
}
temp = arr[i];
}
return list.stream().mapToInt(i -> i).toArray();
}
}
- Integer list를 int[]로 변환할대 stream을 이용해서 하는 것을 연습할수 있었다
- Integer[]를 int[]로 바꾸는 것보단 더 간단하게 할 수 있는 것 같다
나누어떨어지는숫자배열
-
풀이
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(int[] arr, int divisor) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i <arr.length ; i++) {
if(arr[i] % divisor == 0) {
list.add(arr[i]);
}
}
if (list.isEmpty()) {
list.add(-1);
}
return list.stream().mapToInt(i ->i).sorted().toArray();
}
}
- 위의 문제와 크게 다르지않게 분류해서 list에 넣어서 정렬해서 int[]로 변환해서 풀수 있었다
두정수사이의합
-
풀이
class Solution {
public long solution(int a, int b) {
long bigNum ;
long smallNum;
long answer = 0;
if(a==b) {
return a;
} else if(a > b) {
bigNum = a;
smallNum = b;
} else {
bigNum = b;
smallNum = a;
}
for (long i = smallNum; i <= bigNum ; i++) {
answer += i;
}
return answer;
}
}
-
큰 값을 구해서 for문을 통해 합을 해나가는 방식으로 풀었다
-
다른풀이를 보니 큰값을 구하는데 삼항연산자를 통해 간단히 구하는게 편해보였다
-
가장 효율적인 답안은 등차수열에 합을 통해서 구하는 것 같았다
public long solution(int a, int b) {
return sumAtoB(Math.min(a, b), Math.max(b, a));
}
private long sumAtoB(long a, long b) {
return (b - a + 1) * (a + b) / 2;
내일 공부할 내용
- 운영체제 복습 및 과제
- 알고리즘 문제풀이
- TiL 정리 및 Git & 블로그 업데이트
Author And Source
이 문제에 관하여(20210115-TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@foeverna/20210115-TIL
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
알고리즘 복습 및 과제
-
- 싱글은 간단히 구현했는데 더블은 생각보다 어려워서 한참 걸려서 했는데 에러가 많아서 solution을 보면서 다시구현했는데 내가 구현해놓은것에 구멍이 많았다
- 링크드리스트 구조를 익히기에 좋은 예제 였던 것 같다.
-
- 수업에서 배열을 이용한 BinaryTree구현 예제를 알려주셔서 재귀함수를 이용하는 것을 알아서 대부분 쉽게 구현할 수 있었다
- bfs를 통한 탐색이 어려웠는데 기존것과는 다르게 재귀함수로 풀수가 없었기 때문이다
- 동료의 힌트로 queue를 활용하는 것을 알았고 queue에 순서대로 넣은것을 빼가면서 탐색하는 방식으로 문제를 해결할 수 있었다
- 수업에서 배열을 이용한 BinaryTree구현 예제를 알려주셔서 재귀함수를 이용하는 것을 알아서 대부분 쉽게 구현할 수 있었다
알고리즘 문제 풀이
가운데글자가져오기
- 풀이
class Solution {
public String solution(String s) {
char[] chars = s.toCharArray();
StringBuilder stringBuilder = new StringBuilder();
if (chars.length % 2 == 0 ) {
int half = chars.length/2;
stringBuilder.append(chars[half-1]);
stringBuilder.append(chars[half]);
} else {
int half = chars.length/2+1;
stringBuilder.append(chars[half-1]);
}
return stringBuilder.toString();
}
}
-
String에 길이가 짝수인지 홀수인지 구해서 출력해주는 간단한 문제였다
return word.substring((word.length()-1) / 2, word.length()/2 + 1);
- 다른사람의 풀이를 보니 한줄로도 해결되는 것 같다..
- subString의 2번째 param은 -1이라는 것을 이용한 풀이었다.
- 다른사람의 풀이를 보니 한줄로도 해결되는 것 같다..
같은숫자는싫어
-
풀이
import java.util.*; public class Solution { public int[] solution(int []arr) { int[] answer = {}; int temp = -1; List<Integer> list = new ArrayList<>(); for (int i = 0; i < arr.length; i++) { if (arr[i] != temp) { list.add(arr[i]); } temp = arr[i]; } return list.stream().mapToInt(i -> i).toArray(); } }
- Integer list를 int[]로 변환할대 stream을 이용해서 하는 것을 연습할수 있었다
- Integer[]를 int[]로 바꾸는 것보단 더 간단하게 할 수 있는 것 같다
- Integer list를 int[]로 변환할대 stream을 이용해서 하는 것을 연습할수 있었다
나누어떨어지는숫자배열
-
풀이
import java.util.ArrayList; import java.util.List; class Solution { public int[] solution(int[] arr, int divisor) { List<Integer> list = new ArrayList<>(); for (int i = 0; i <arr.length ; i++) { if(arr[i] % divisor == 0) { list.add(arr[i]); } } if (list.isEmpty()) { list.add(-1); } return list.stream().mapToInt(i ->i).sorted().toArray(); } }
- 위의 문제와 크게 다르지않게 분류해서 list에 넣어서 정렬해서 int[]로 변환해서 풀수 있었다
두정수사이의합
-
풀이
class Solution { public long solution(int a, int b) { long bigNum ; long smallNum; long answer = 0; if(a==b) { return a; } else if(a > b) { bigNum = a; smallNum = b; } else { bigNum = b; smallNum = a; } for (long i = smallNum; i <= bigNum ; i++) { answer += i; } return answer; } }
-
큰 값을 구해서 for문을 통해 합을 해나가는 방식으로 풀었다
-
다른풀이를 보니 큰값을 구하는데 삼항연산자를 통해 간단히 구하는게 편해보였다
-
가장 효율적인 답안은 등차수열에 합을 통해서 구하는 것 같았다
public long solution(int a, int b) { return sumAtoB(Math.min(a, b), Math.max(b, a)); } private long sumAtoB(long a, long b) { return (b - a + 1) * (a + b) / 2;
-
-
내일 공부할 내용
- 운영체제 복습 및 과제
- 알고리즘 문제풀이
- TiL 정리 및 Git & 블로그 업데이트
Author And Source
이 문제에 관하여(20210115-TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@foeverna/20210115-TIL
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(20210115-TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@foeverna/20210115-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)