목록전체 글 (232)
거인의 코딩일지
널 병합 연산자 (??) 는 왼쪽 피연산자가 null 또는 undefined일 때 오른쪽 피연산자를 반환하고, 그렇지 않으면 왼쪽 피연산자를 반환하는 논리 연산자이다. 이는 왼쪽 피연산자가 null 또는 undefined 뿐만 아니라 falsy(거짓같은 값) 값에 해당할 경우 오른쪽 피연산자를 반환하는 논리 연산자 OR (||)와는 대조된다. 다시 말해 만약 어떤 변수 foo에게 falsy값( '' 또는 0)을 포함한 값을 제공하기 위해 ||을 사용하는 것을 고려했다면 예기치 않는 동작이 발생할 수 있다. Optional chaining 연산자 (?.) 와의 관계? 널 병합 연산자는 명확한 값으로 null 또는 undefined 를 처리하고 Optional chaining 연산자는 null or nude..
의사코드란?? 의사 코드란 알고리즘 로직에 집중할 수 있도록 알고리즘을 묘사하는 정형화된 언어이다. 의사코드는 완벽을 요구하는데소스코드 한줄 한줄 대입 되기 위해 전체적인 로직을 설명해 주어야 한다. 즉!! 컴퓨터가 수행해야 할 코드를 인간의 언어로 간략히 설명해 놓은 코드이다. 의사코드의 목적!? 의사코드를 보면 코드를 짠 사람의 의도를 알 수 있기에 디버깅 하거나 수정해야 할 때 도움을 줄 수 있다. 알고리즘이 어떻게 실행되고 결과가 어떻게 나오는지 보여줌 나중에 발생할 도류 버그 등을 의사코드 작성단계 에서 미리 수정이 가능 협업 할 때 프로그램의 문제를 해결하기 위한 도구로서 프로그램의 흐름에 대해 의견을 나누기 위한 하나의 방법으로 쓰이기도 한다. 설계의 기초단계로 프로그램을 이해하기가 쉽다. ..
Java 에서 String 클래스는 불변성을 가지고 있다. 그래서 변하지 않는 문자열을 자주 사용하는 경우에는 좋은 성능을 기대 할 수 있지만! 문자열에 대한 변경이 자주 일어나는 프로그램에서 String 만 사용하게된다면 효율적인 성능을 기대하기 어렵다. 문자열에 대한 변경이 자주 일어나는 프로그램에서는 StringBuilder, StringBuffer 을 사용하여 효율적인 성능을 보일 수 있다. String VS StringBuilder && StringBuffer Java에서 String 객체는 한번 값이 할당 되면 그 공간은 변하지 않는다. 하지만 StringBuilder 이나 StringBuffer 객체는 한번 값이 할당 되면 할당 된 공간이 변하는 특성을 가지고 있다. 여기서 할당된 공간이 변..
class Solution { public String solution(String X, String Y) { StringBuilder answer = new StringBuilder(); int [] xArr = new int [10]; int [] yArr = new int [10]; for(int i = 0; i = 0; i--){ for(int j =0; j
class Solution { public int solution(int[] number) { int answer = 0; for(int i = 0; i < number.length; i++){ for(int j = i+1; j< number.length; j++){ for(int k = j+1; k< number.length; k++){ if(number[i]+number[j]+number[k]==0){ answer++; } } } } return answer; } } 학생들은 각각의 정수번호를 가지고 있다. 3명의 학생의 정수 번호를 합쳐서 0 이라면 삼총사 결성! 그러면 배열에서 3개의 정수를 뽑아와서 더해주고, 0일때 result 를 ++ for반복문 3개를 통해 배열에 접근 그 뒤 마지막 for..
class Solution { public int solution(int n, int m, int[] section) { int start = section[0]; int answer = 1; for(int i = 1; i < section.length; i++) { if(start + m - 1 < section[i]) { answer++; start = section[i]; } } return answer; } } 문제가 너무너무 길어서 읽고 해석하는데 시간이 많이 걸렸다! 하지만 코드는 생각보다 단순했다! start 라는 변수에 section 배열의 첫번째 값을 대입해주고 반복문을 돌려서 그 안에 if 조건문으로 answer 을 늘려준뒤 start를 초기화 해주는 것이다!
class Solution { public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[2]; int count = 0; int z_count = 0; for(int i : lottos){ if(i == 0){ z_count++; } else { for(int j : win_nums){ if(i == j){ count++; break; } } } } answer[0] = (count+z_count) > 1 ? 7-(count+z_count) : 6; answer[1] = count > 1 ? 7-count : 6; return answer; } } 우선 문제가 너무 길었다...! 문제를 잘 읽고 우선 0을 세주고 맞은걸 카운..
Props 선언 Vue 컴포넌트는 명시적인 props 선언을 요구하는데, 이렇게 함으로써 외부에서 컴포넌트에 props 를 넘길 때 어떤 속성이 폴 스루 속성으로 처리되어야 하는지 알 수 있다.
컴포넌트 정의하기 빌드 방식을 사용할 떄 일반적으로 싱글 파일 컴포넌트 (SFC)라고 하는 .vue 확장자를 사용하는 전용 파일에 각 Vue 컴포넌트를 정의 한다. 당신은 {{ count }} 번 클릭했습니다. 빌드 방식을 사용하지 않을 때 Vue 컴포넌트는 Vue 관련 옵션을 포함하는 일반 JavaScript 객체로 정의할 수 있다. import { ref } from 'vue' export default { setup() { const count = ref(0) return { count } }, template: ` 당신은 {{ count }} 번 클릭했습니다. ` // 또는 `template: '#my-template-element'` } 위에 형식은 옵션 api 형식의 방식이다. JavaScri..
import java.util.ArrayList; import java.util.List; class Solution { public int[] solution(long n) { List list = new ArrayList(); while (n > 0) { list.add((int)(n % 10)); n /= 10; } int[] answer = new int[list.size()]; for (int i = 0; i < list.size(); i++) { answer[i] = list.get(i); } return answer; } } n이 0이 될 때까지 10으로 나누어 가면서 각 자리의 숫자를 구해준 다음 그 다음 list 를 배열로 변환하여 리턴해주었다!!! 오랜만에 알고리즘 테스트...! 오랜만..