전체 글 104

[백준/JAVA] 10818 최소, 최대

문제 풀이 배열을 정렬하는 Arrays.sort()를 사용해서 풀어보았다. 해당 기능을 사용하기 위해서는 java.util.Arrays를 import 해줘야한다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] arr = new int[n]; StringTokenizer st = new StringTokenizer(br.readLi..

코딩테스트 2021.04.28

[백준/JAVA] 1110 더하기 사이클

문제 나의 접근 방법 1. 처음 수(N)의 10의 자리와 1의 자리는 10으로 나눈 몫과 나머지이다. 2. 몫과 나머지의 합은 새로운 수의 1의 자리이다. 3. 처음 수(N)의 나머지 값이 새로운 수(M)의 10의 자리이다. 4. 이러한 사이클을 체크하는 카운트 변수(CNT)가 필요하다. 정리하면 아래와 같은 수식이 완성된다. M = ( (N%10)*10 ) + ( ((N/10) + (N%10))%10 ); 주의할 점은 필자는 M을 새로운 수로 두었는데, 실제 반복문 안에서 처음 수(N)를 계속 새로운 값으로 대체하는 것이라 M을 N으로 고친다. while(true){ M = ( (N%10)*10 ) + ( ((N/10) + (N%10))%10 ); } 어렵게 느껴질 수 있지만, 생각해보면 그렇게 어려운..

코딩테스트 2021.04.27

[백준/JAVA] 11021 A+B-7 (StringTokenizer)

문제 풀이 이번에도 BufferedReader와 BufferedWriter를 사용해서 입출력을 구현할 것이다. BufferedReader는 데이터가 한 줄에 담기기 때문에 여러 데이터를 받을 때는 StringTokenizer를 사용한다. 여기서 잠깐🖐 StringTokenizer를 왜 for문 안에 작성하는지 의문이 생길 것이다. 그 이유는 for문을 통해 한 줄씩 데이터가 들어가게 되고, 최종적으로 여러 행의 데이터가 생기기 때문에 각 행 별로 데이터를 쪼개기 위함이다. import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException {..

코딩테스트 2021.04.27

[백준/JAVA] 15552 빠른 A+B (BufferedWriter)

문제 이전 A+B-3 문제와 똑같지만 시간 제한이 존재한다. 따라서, 문제에서 언급한 BufferedReader와 BufferedWriter를 사용해서 풀어야한다. 여기서 잠깐🖐 BufferedWriter? BufferedWriter는 BufferedReader와 함께 빠른 입출력 퍼포먼스를 낸다. 사용하는 방법은 다음과 같다. // BufferedWriter 선언 BufferedWriter br = new BufferedWriter(new OutputStreamWriter(System.out)); // 출력할 문자열 String str = "abcdef"; // 출력 bw.write(str); // 줄바꿈 bw.newLine(); // 버퍼에 남아있는 모든 데이터 출력 bw.flush(); // 닫기 ..

코딩테스트 2021.04.27

[백준/JAVA] 10950번 A+B-3

문제 나의 접근 방법 테스트 케이스 개수(T)를 크기로 갖는 배열을 하나 만들어야겠다. (for A+B 값 저장) 기본적인 for문 문제이기 때문에 어려움은 없었다. 풀이 - scanner 사용 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 테스트케이스 개수 입력받기 int n = sc.nextInt(); // 개수만큼의 크기를 가진 배열 생성(=왼/오 값이 담긴 변수가 될 것임) int arr[] = new int[n]; // 테스크케이스 개수 만큼 값 왼,오 값 받기 for(int i=0; i

코딩테스트 2021.04.27

[백준/JAVA] 2884 알람 시계

문제 나의 접근 방법 단지, 45분전의 시간만 구하면 되는 것이다. 1. 만약 입력받은 분이 45분보다 작다면 시간은 -1이 되며, 45분전의 시간의 분(M)은 기존의 분 +15분이 된다. 1-1. 이렇게 생각한 이유 2. 시간이 0보다 작아진다면 해당 시간을 23으로 설정하면 된다. 두 가지 입력 방법을 가지고 해결해보자 - Scanner 사용 (소요시간 256ms) import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int H = sc.nextInt(); int M = sc.nextInt(); // 분이 45분보다 작다면 if(M

코딩테스트 2021.04.27

리액트(ReactJS) 성능 최적화를 해보자 - shouldComponentUpdate()

해당 게시물은 생활코딩의 이고잉님 강의를 듣고 개인적으로 정리한 내용을 담고 있습니다👩‍💻 리액트로 기능을 구현하다보면 값의 변형이 거의 없는 요소가 호출되는 불필요한 경우가 있다. 이런 경우 렌더링 성능이 떨어지게 되므로 좋지 않다. 따라서, 조건을 걸고 특정한 경우에만 호출 되도록 shouldComponentUpdate()를 사용한다. 해당 메소드는 오직 성능 최적화를 위해서만 사용한다. shouldComponentUpdate(newProps, newState) 해당 메소드의 기본값은 true이다. 조건을 통해 false로 지정하여 특정 경우에 호출되지 않도록 설정하면 된다. 우선, 위 메소드를 적용하기 전을 살펴보자 관리자 도구를 보면 홈페이지의 네비게이션 역할을 하는 TOC 컴포넌트의 렌더 함수도..

React 2021.04.25

배열에 데이터를 추가하는 방법 - Array push()와 concat()

임의의 배열에 새로운 데이터를 추가하는 방법으로 자주 사용되는 push와 concat 의 특징과 차이점을 알아보자 push( ) push는 기존 배열에 새로운 데이터를 추가하는 방법이다. 데이터 추가 전과 후를 비교하면 true var arr1 = [1,2,3]; arr1.push(4); console.log(arr1); // 1,2,3,4 출력 var arr2 = arr1.push(4); console.log(arr1, arr2); // 1,2,3,4 와 1,2,3,4 출력 concat( ) concat은 기존 배열을 복사한 후, 새로운 데이터를 추가하는 방법이다. 데이터 추가 전과 후를 비교하면 false var arr1 = [1,2,3]; arr1.concat(4); console.log(arr1)..

Javascript 2021.04.25

리액트(ReactJS) 컴포넌트 이벤트 생성하기

해당 게시물은 생활코딩의 이고잉님 강의를 듣고 개인적으로 정리한 내용을 담고 있습니다👩‍💻 여러가지 컴포넌트 이벤트 중, 목차의 요소를 클릭하면 해당 요소의 내용을 출력하는 이벤트를 만들어볼 것이다. e.target 속성과 bind 두 가지 방식을 사용해서 구현해 볼 것이다. e.target 속성 이용 // App.js 파일 내 목차 구현 부분만 명시 return ( ... ... ... ); // NAV.js // 실제 목차 로직 컴포넌트 바인드(bind) 이용 // App.js 파일 내 목차 구현 부분만 명시 return ( ... ... ... ); // NAV.js // 실제 목차 로직 컴포넌트

React 2021.04.19