목록전체 글 (395)
Just Do IT!

import java.util.Scanner;import java.util.StringTokenizer;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String sentence = sc.nextLine(); // 문자열 sc.close(); StringTokenizer word = new StringTokenizer(sentence, " "); System.out.println(word.countTokens()); }} StringTokenizer를 사용한다.공백을 기준으로 나뉘어 토큰에 저장하기 때문에 입력한 문자열의 처음이나 마지막에 공백이 있어도 동일한 결과를 ..
Java에서 값을 입력받을 수 있는 방법이 두 가지가 있다.Scanner와 BufferedReader인데, 백준에서 문제를 풀다가 빠른 A+B라는 문제에서 BufferedReader를 쓰라고 해서겸사겸사 정리도 할 겸 블로그에 적어본다. Scannerjava.util 패키지 내에 포함된 클래스Scanner의 특징토큰 단위로 입력값의 경계로 인식하여 데이터를 좀 더 쉽게 입력받을 수 있다.토큰(token) : 공백 문자로 구분되는 요소String 값을 입력할 때는 next()와 nextLine()에 따라 입력값의 경계가 달라질 수 있다.각 토큰들은 Scanner 메서드에 하나씩 순서대로 입력된다.데이터 타입이 입력 받는 시점에서 결정되므로 별도의 형변환이 필요하지 않다.원하는 타입으로 읽을 수 ..

간단해보이지만, 생각해볼 것들이 은근 있다.문제를 푼 다음에 찾아보니까 세 가지 방법으로 풀 수 있다고 해서 정리해보려고 한다. 내가 푼 방법 (나머지 및 나눗셈 연산을 통해 각 자릿수를 구하여 출력하는 방법) import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); sc.close(); System.out.println(A * (B % 10)); System.out.println(A * (B % 100 / 10)); System.out.print..

자바 실습을 하던 중에, warning이 떴다. 이런 warning이었는데 해결하지 안하도 잘 돌아가긴 하지만,뭔가 찝찝해서 구글링해서 찾아보고 해결했다. new Scanner 를 System.in을 해주었기 때문에 반드시close 를 해주어야한다는 뜻이다. int sum = 0; double avg = 0; // 세 명의 수학 점수 입력 Scanner sc = new Scanner(System.in); 이렇게 Scanner를 사용했지만 close를 하지 않아서 생긴 문제였다. scanner를 다 사용한 뒤에 추가하면 warning이 일어나지 않는다. package com.practice09;import java.util.Scanner;public class InputExample { pub..

동기와 하는 프로젝트에서 텍스트 에디터를 쓸 일이 생겼다.아직 UI 구현 단계지만, 텍스트 에디터는 처음 써보는 거라 여러 라이브러리를 두고 고민을 했다.개발 기간을 그렇게 길게 잡지 않아서 라이브러리를 쓰는 게 적합하다고 생각했고,그 중 가장 많이 다운받은 (npm trend 기준) react-quill 라이브러리를 적용했다. react-quill을 선택한 이유는 아래와 같다.깔끔한 UI (custom 가능)사용법이 잘 나와있다 (공식 문서, 여러 블로그 글)이미지 업로드 따로 핸들링 가능 (프로젝트에서 이미지 다중 업로드가 필요하기 때문) 이러한 이유들로 react-draft-wysiwyg와 고민했지만 quill로 결정, 프로젝트에 도입했다. WYSIWYG란? What You See Is W..
작년 8월 쯤부터, 올해 6월까지 근 1년 가까이 진행했던 사이드 프로젝트가 끝내 미완성으로 마무리되었다.각자의 사정이 있고 나의 사정도 있었기에 좋게 마무리 지었지만, 그래도 너무 아쉬워서 프로젝트 회고글을 써보려고 한다. Quiz Up 프로젝트의 시작 시작은 한 사이드 프로젝트 모집글이었다.캠퍼스픽에서 모집글을 보고 마침 아무것도 안하고 있던 나는 냅다 댓글을 남겼다. 그렇게 총 1명의 디자이너, 2명의 프론트엔드 개발자, 2명의 백엔드 개발자가 모였다.첫 회의날 백엔드 개발자 한 분이 나가시면서 4명이 되었지만 기획은 쭉쭉 잘 진행되어갔다.각자 하고 싶은 프로젝트를 이야기하고 투표를 통해 정해진게 바로 'Quiz up'이었다. CS면접을 준비하는데 어려움을 겪는 개발자 취준생들을 위한 프..

사이드 프로젝트 중, 주소 찾기를 구현해야 해서 찾아보니까 카카오 우편번호 서비스 API가 있었다. https://postcode.map.daum.net/guide Daum 우편번호 서비스우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다.postcode.map.daum.net 위의 사이트로 들어가보면 자세하게 guide가 나와있다.직접 API를 연동하는 대신, react-daum-postcode라는 라이브러리를 이용해서 편하게 구현했다.https://www.npmjs.com/package/react-daum-postcode react-daum-postcodeDaum Postcode s..

카카오 주소 찾기 api를 사용해서 주소찾기 form을 만드는데, 이런 오류가 났다. 콘솔에 제대로 data가 들어오는게 찍히는데, 문제는 removechild가 되지 않는다는 것이었다.해결방법은 의외로 쉬웠다. 오류난 코드 {isOpen && ( )} 이렇게 버튼을 클릭한 경우에만 DaumPostcode가 실행되도록 해주었는데 계속 오류가 났다. 해결한 코드 {isOpen && ( )} 이렇게 div로 DaumPostcode를 감싸주니 간단하게 해결되었다. 참고한 글들https://velog.io/@hamham/%EC%B9%B4%EC%B9%B4%EC%98%A4-API-%EC%A3%BC%EC%86%8C-%EC..
작년에 내일배움캠프를 수료하고 꽤나 많은 일들이 있었다.우선 가장 큰 일은, 내가 개발자라는 직업을 본격적으로 준비하게 되었다는 점. 42서울 라피신 과정을 진행할 때까지만 해도 개발자는 나에게 가깝고도 먼 이야기였다.복수전공을 하면서 언젠간 '개발'을 업으로 삼겠구나, 하는 생각은 있었지만 전혀 준비를 하지 않았기 때문이다.그래서 전공자들보다 조금 뒤늦게 개발 공부를 시작하고 그 계기가 내일배움캠프가 되었다. https://daydream-sy.tistory.com/288 2023년 회고나는 2023년을 잘 보냈을까? 어느덧 2024년이 된 지 벌써 4일이나 지났다. 원래 회고는 마지막날 하는 거라지만, 블로그에서는 조금 늦었다. 2023년은 바쁘기도 했고 느긋하기도 했던 해였던 것 같다daydream..

프로젝트를 하던 와중에, 이런 에러가 발생했다. 구글링해보니 useEffect 관련 오류라서 오류 해결한 걸 남겨보려고 한다. useState() 는 비동기로 상태값을 변경하기 때문에 렌더링 시점에서 상태가 개발자의 의도대로 업데이트 되지 않은 상태일 수도 있다. 그래서 나는 useEffect를 이용해 특정 값이 바뀔때마다 무적권 해당 콜백함수가 실행되도록 하게 했는데, 그렇게 하다보니 저 에러가 발생한 것이었다. 무한 루프의 warning... 이걸 해결하는 방법은 두 가지가 있다. 1. useEffect 안으로 해당 무한 렌더링 되는 함수를 아예 집어 넣기2. useCallback 함수를 이용해서 특정 값이 변화하지 않을 때는 이전 값을 재활용해서 쓰도록 하기 이 두 가지가 있는데, 나는 첫 번째..