최신 글
-
Linux scp ssh key 인증
Linux에서 서버 간에 파일을 복사하는 방법 중에 scp(secure copy protocol)로 ssh 연결을 통한 암호화를 이용해서 파일을 전송하는 방법이 있습니다.scp 명령어를 통해서 서버간 파일을 복사할 때 패스워드를 직접 입력해주기도 하지만, ssh-keygen을 통해서 client의 공개키(~/.ssh/id_rsa.pub)를 server에 인증키(~/.ssh/authorized_keys)에 등록하면 간편하게 패스워드를 입력하지 않고 서버 간 파일을 복사할 수 있습니다. 윈도우 환경 Docker에서 ubuntu:latest 이미지로 client/server 2개의 컨테이너를 띄우고client 컨테이너에서 server 컨테이너로 scp 명령어를 통해서 비밀번호 없이 ssh key 인증으로 파일..
2025.01.18
-
Tibero6 parameters 및 session 목록 조회 방법
Tibero DB의 parameters 및 session 조회 방법에 대해서 간략하게 정리했습니다. parameters 조회V$PARAMETERS를 조회하면 MAX_SESSION_COUNT 등 Tibero의 parameters 설정값들을 조회 가능합니다.저는 주로 MAX_SESSION_COUNT를 조회할 때 많이 사용했습니다.SELECT * FROM V$PARAMETERS; session 목록 조회V$SESSION를 조회하면 현재 클라이언트 및 AP서버에서 커넥션 요청을 맺고 실행 및 대기하고 있는 세션 목록도 조회가 가능합니다.SELECT * FROM V$SESSION; 현재 실행 중인 session 목록 조회STATUS는 RUNNING으로 현재 실행 중인 session 목록들만 조회도 가능합니..
2025.01.08
-
Nexus bluk upload 방법 및 400, 405 에러 해결
Nexus repository에 라이브러리를 올릴 때 미러링 방식이 아닌 수기로 N개를 올려야 한다면 시간이 많이 소요가 됩니다.sonatype-nexus-community Github에는 bluk upload를 가능하게 하는 mavenimport.sh 쉘을 제공하고 있습니다.mavenimport.sh 쉘을 통해서 Nexus bluk upload 하는 방법을 정리했습니다. nexus-repository-import-scripts/mavenimport.sh at master · sonatype-nexus-community/nexus-repository-import-scriptsA few scripts for importing artifacts into Nexus Repository - sonatype-ne..
2024.12.25
-
Gradle 데몬을 사용하지 않는 법
Gradle 데몬(Daemon)은 사용자의 제어를 받지 않고 백그라운드 프로세스로 실행되는 프로그램입니다.하단 Gradle 공식 문서에서도 Gradle은 JVM에서 실행되고 빌드를 실행하는데 걸리는 시간을 줄여주는 장기 백그라운드 프로세스라고 말합니다.그렇기에 Gradle 3.0 부터 기본 설정으로 작업을 실행하면 데몬은 항상 기본 설정값으로 생성되게 되어 있습니다. 저의 경우 개발 서버에서 개발환경과 테스트환경을 같이 써서 많은 프로세스가 떠있기에 메모리 점유율이 85퍼가 넘어갔습니다...메모리 자원을 최대한 효율적으로 써야했기에 Gradle 작업을 실행하면 데몬이 생성되지 않게 설정이 필요했습니다. Gradle 작업을 실행할 때 데몬이 생성되지 않게 설정하는 방법 2가지를 정리했습니다.Gradle D..
2024.12.12
-
Oracle 19c 레지스트리 삭제 시 주의 및 복구 방법
Windows 10에서 Oracle 19c를 완전 삭제 하기 위해서는 하단 3가지를 진행해야 합니다.서비스 > Oracle로 시작하는 서비스 모두 중지Oracle deinstall.bat 실행레지스트리에서 Oracle 관련 삭제 3번 레지스트리 삭제를 할 때 주의해야 할 점을 공유드리려고 합니다.레지스트리를 잘못 삭제하게 되면 윈도우 부팅에도 문제가 생깁니다.레지스트리에 Oracle 관련 내용을 삭제할 때 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Oracle 관련 폴더만 삭제해야 합니다.저처럼 바보같이 Wow6432Node 폴더를 전체 삭제하게 되면 재부팅 시 기동이 정상적으로 안 됩니다...ㅎㅠㅠ 레지스트리 삭제 시 주의점과 Wow6432Node 폴더를 실수로 삭제하고 재..
2024.11.22
-
Oracle 19c setup.exe 실행되지 않는 문제
최근에 MySQL과 MariaDB만 쓰다가 Oracle로 테스트하고 싶은 게 있어서 설치를 진행했습니다.진행중에 Windows 10에서 oracle 19c setup.exe가 실행되다가 깜빡하고 꺼지는 문제를 해결하는 방법을 공유하려고 합니다. 간단하게 요약하면 2가지만 확인 및 변경해주시면 됩니다. 1. 폴더 이름에 공백(white space) 확인Ex) C:\Users\jaedeok\OneDrive\바탕 화면\WINDOWS.X64_193000_db_home2. 설치 폴더를 C:/ 또는 D:/ 루트 경로 이동 하단 setup.exe를 클릭하고 관리자 권한으로 실행을 하면 console 창이 열리고 깜빡거리고 꺼지는 경우가 있습니다. oracle setup.exe not running 으로 구글링을 해..
2024.11.20
-
Linux nohup과 &의 역할 및 표준 출력과 표준 오류 파일 처리
Spring boot의 Jar를 리눅스 서버 또는 윈도우 bash에서 직접 실행하는 경우가 종종 있습니다.nohup java -jar 이름.jar & 명령어로 실행을 하는데 nohup과 &(엠퍼샌드)의 역할과 nohup 실행 시 표준 출력과 표준 오류 처리 방법이 궁금해서 정리를 했습니다.nohup과 &의 역할 및 하단 상황별 표준 출력과 표준 오류 파일 처리 방법을 정리했습니다.nohup.out 기본 생성표준 출력만 파일 생성표준 오류만 파일 생성표준 출력과 표준 오류 파일 모두 생성표준 출력과 표준 오류 파일 모두 생성 X nohup의 역할 - 세션 독립성nohup(no hang up)은 터미널 세션 종료 후에도 프로세스를 계속 실행하기 위한 명령어입니다.기본적으로 터미널을 닫으면 해당 세션에서 실행..
2024.11.19
-
React CRA 프로젝트 빌드(Webpack, Babel)
React의 Create React App(CRA)는 빠르게 프로젝트를 시작할 수 있도록 도와주는 기능입니다.CRA로 만든 프로젝트에서 프로덕션 환경에 배포할 준비가 되면 npm run build 명령어를 통해서 최적화된 정적 파일을 생성합니다. 빌드 과정에서 핵심적인 역할을 하는 도구가 Webpack과 Babel입니다.npm run build 동작 과정과 Webpack과 Babel에 대해서 공부한 내용을 정리했습니다.맞지 않는 내용이나 추가적인 고견이 있으시면 댓글을 달아주시면 감사하겠습니다. npm run build 동작 과정1. 환경 설정빌드 과정이 시작되면 애플리케이션의 환경 설정이 production 모드로 전환됩니다.NODE_ENV=production이 설정되면, React와 관련된 개발 전용..
2024.11.18
-
Gradle에서 환경별 Nexus 설정 관리하기
Spring Boot로 백엔드 개발을 하면 빌드 도구로 Gradle을 많이 사용하고 gradle.properties라는 파일은 많이 보셨을 것 같습니다. 회사나 프로젝트마다 라이브러리 또는 넥서스를 관리하는 방법은 전부 다릅니다.해당 게시물에서는 넥서스가 개발, 테스트, 운영으로 각각 나눠져 있고 ip나 도메인이 다를 때 설정 파일을 환경별로 나눠서 사용하는 방법을 다루려고 합니다. ./gradlew 명령어로 빌드 수행 시에 프로젝트 설정 변수인 -Penv를 받아서 gradle-${env}.properties로 각 환경별 넥서스 정보를 불러오는 방법을 정리했습니다. 하단 목록은 환경별로 만들 gradle 설정 파일 이름과 환경별로 테스트에 사용하기 위한 넥서스 포트 번호입니다.환경별환경별(영어)환경별 설..
2024.11.14
-
Spring Batch initialize-schema 버전 별 설정 차이
Spring Batch에서는 총 6개의 메타 테이블이 존재합니다. Spring Batch의 메타 테이블은 스프링 배치를 실행하고 나서 Job, Step의 실행 이력을 추적이 가능하고 모니터링에도 사용이 가능합니다. 파라미터가 동일한 Job은 실행하지 않게 설정도 가능하고 실패 지점부터 재시작 기능도 제공을 해줍니다. Spring Batch 2.5.0 버전 미만은 application.yml에 spring.batch.initialize-schema 설정으로 메타 테이블 6개를 자동 생성해 줍니다. Spring Batch 2.5.0 버전 이상부터는 application.yml 설정이 spring.batch.jdbc.initialize-schema 설정으로 spring.batch 앞에 jdbc라는 문구가 추가..
2024.07.06
-
Gradle copyDependencies task 생성 및 사용
Gradle을 사용하면서 gradle의 dependencies로 사용하고 있는 의존성 jar들을 복사하는 방법과 task를 만들어서 진행하는 방법에 대해서 알아보겠습니다. Maven에서는 mvn dependency:copy-dependencies라는 방법을 통해서 target/ 영역에 사용하는 jar들을 다운로드할 수 있습니다.Gradle에서는 별도로 jar 복사하는 방법을 제공해주지 않아서 직접 task를 만들어야 합니다. 해당 포스팅에서는 gradle 버전을 7.5을 사용했습니다.Spring Boot + Gradle 프로젝트는 있다고 가정을 하고 진행하겠습니다. build.gralde copyDependencies 추가copyDependencies task를 작성할려면 build.gradle에 3..
2024.04.27
-
Gradle Build Lifecycle
Spring Boot를 사용할 때 Gradle을 사용하면 build 명령어를 사용해서 주로 jar를 만들고 사용하고 있었습니다.내부적으로 어떻게 동작을 해서 jar가 만들어지는 공부하기 위해서 Gradle Build LifeCycle을 공부한 내용을 정리해보려고 합니다. Gradle은 7.5 버전을 사용을 했고 하단 링크를 참고한 Gradle Build LifeCycle 링크입니다.https://docs.gradle.org/current/userguide/build_lifecycle.html Gradle Task Graph(작업 그래프)Gralde은 task라는 단위로 작업을 나누고 작업을 실행하기 전에 작업 그래프를 작성을 합니다.Gradle build라는 태스크를 실행하면 DAG(방향성 비순환 그래..
2024.04.27
-
Spring Boot jsp 사용
Spring Boot에서 jsp를 사용하는 방법에 대해서 정리를 해봤습니다. Spring Boot에서는 기본적으로 jsp 컴파일러는 지원해주지 않습니다. jsp를 사용하려면 tomcat-embed-jasper 의존성을 추가하면 사용이 가능합니다. Spring Boot에서는 thymeleaf와 mustache라는 템플릿 엔진은 기본적으로 지원하고 사용하는 것을 권장하고 있습니다. (Spring Boot 권장 -> thymeleaf) 프로젝트를 진행하다보면 예외적인 상황이 생기기에 jsp를 사용하는 방법에 대해서 정리했습니다. 사용 버전 사용한 java와 gradle, spring boot 버전에 작성했습니다. java : 11 gradle 7.4 spring boot : 2.4.4 io.spring.dep..
2024.03.17
-
zipkin server 원하는 버전 jar 다운로드
zipkin은 서비스들 간의 요청 추적을 위해 사용하는 로그 분산 추적 시스템(Collector, Query Service, WebUI)입니다. zipkin server를 다운로드 하는 방법은 jar, docker image 2가지가 있습니다. 해당 포스팅에서는 원하는 jar 버전을 선택하고 다운로드해서 zipkin server jar를 실행해 보겠습니다. zipkin 공식 사이트 quickstart 쉘을 이용한 다운로드 하단 zipkin 공식 사이트에서 제공하는 quickstart 쉘을 이용한 다운로드를 진행하겠습니다. 명령어는 하단 공식 사이트에서 제공하는 것으로 정말 간단합니다. 하지만, 한 가지 문제는 공식 사이트에서 제공하는 quickstart 명령어는 가장 최신의 zipkin server re..
2024.02.17
-
윈도우 Kafka 설치 에러 - 명령 구문이 올바르지 않습니다.
윈도우에서 Kafka를 설치하기 위해서 zookeeper, kafka-server bat 파일을 실행하는데 계속해서 "명령 구문이 올바르지 않습니다." 에러가 발생했다. 처음에는 명령어를 잘못 쳤다고 생각해서 파워셀을 켜보고 bash 쉘도 켜보고 계속 명령어를 입력했다....ㅎ 구글링을 해서 찾아보니 윈도우에서 Kafka bat 파일을 실행할 때 동일한 에러가 발생하는 사람이 많은 것을 확인했다. 해결 방법은 kafka 폴더를 C:\에 가깝게 즉 주소를 짧게 해야한다....허허 참 C:\Users\jaedeok\study\kafka_2.13-2.7.0 -> C:\Users\jaedeok\kafka_2.13-2.7.0 C:\Users\jaedeok\study\kafka_2.13-2.7.0 -> C:\kaf..
2024.01.08
-
윈도우 Docker 환경 nexus 설치
Nexus란 Sonatype라는 회사에서 만들었으며 내부망에서 사설 레지스트리로 구성해서 사용할 수 있는 저장소입니다. Nexus를 사용하는 이유는 자체적으로 개발한 라이브러리나 소프트웨어를 저장하고 관리할 수 있고 외부 저장소에 의존하지 않고 내부에서 필요한 종속성을 효율적으로 사용 가능한 것이 주된 이유입니다. 하단은 sonatype의 nexus 공식 페이지입니다. Sonatype Nexus Repository - Binary & Artifact Management | SonatypeManage components, binaries & build artifacts across your software supply chain. Your single source of truth to store & dis..
2024.01.07
-
Spring Boot + Gradle build.gradle local .jar 추가
내부망에서 진행하는 프로젝트는 별도 jar 모음을 압축해서 가지고 있거나 nexus라는 사설 레지스트리를 사용해서 의존성에 접근한다. 내부망에서 nexus 사설 레지스트리 접근 방식이 안 될 때 jar 파일을 가지고 있다면 gradle에서는 local에 jar를 등록해서 사용할 수 있는 방법이 있다. 해당 포스팅에서는 gson jar를 다운로드 받아서 Spring Boot + Gradle Local 환경에서 Gradle의 File-dependencies 방법을 이용해서 jar를 추가하는 방법을 진행해 본다. Gradle File Dependencies에 대한 공식 문서는 하단 링크에 있습니다. Learning the Basics A common pattern, in multi-project builds,..
2024.01.03
-
nGrinder & Spring Boot API 성능 테스트
더보기 1. nGrinder 성능 테스트 플랫폼 설치 2. nGrinder & Spring Boot API 성능 테스트 앞에서는 nGrinder를 설치하는 과정을 진행했다. 해당 포스팅에서는 Spring Boot로 GET / POST로 API를 하나씩 생성하고 nGrinder에서 테스트 스크립트를 만들고 성능 테스트를 진행한다. 목차 Spring Boot 프로젝트 생성 Spring Boot GET / POST 메서드 생성 nGrinder Quick Start - GET 요청 성능 테스트 생성 및 실행 nGrinder POST 요청 성능 테스트 생성 및 실행 Spring Boot 프로젝트 생성 스프링 부트 프로젝트를 간편하게 생성할 수 있는 사이트로 가서 https://start.spring.io/ 프로젝..
2023.03.05
-
nGrinder 성능 테스트 플랫폼 설치
더보기 1. nGrinder 성능 테스트 플랫폼 설치 2. nGrinder & Spring Boot API 성능 테스트 서버 성능 테스트 플랫폼인 nGrinder를 공부했던 내용을 정리한다. 진행을 하면서 공부했던 nGrinder란 어떤 것이고 성능 테스트 오픈 소스 플랫폼은 어떤 것이 있고 nGrinder 설치 과정에 대해서 정리한다. nGrinder는 네이버에서 기존 오픈소스인 Grinder를 커스텀해서 개발했다. nGrinder의 공식 Github 사이트는 다음과 같다. GitHub - naver/ngrinder: enterprise level performance testing solution enterprise level performance testing solution. Contribute ..
2023.03.05
-
Docker 얄코님 따라하기 & 명령어 정리
이번에는 사내에서 도커를 사용하게 되어서 얄코님의 예제를 따라 해보면서 명령어를 정리해보려고 한다. 참고한 사이트는 다음과 같다. 진짜 해당 영상만 봐도 도커의 기본을 쉽게 알 수 있다! 강추!! 얄코님 예제 따라하기 얄코님의 예제는 다음과 같이 이뤄진다. frontend, backend, database 각각의 Dockerfile을 이미지로 만들고 컨테이너로 실행시키기 docker-compose를 활용해서 frontend, backend, database 모두 연동해서 실행시키기 여기서는 frontend Dockerfile을 이미지로 만들고 컨테이너로 실행시키는 과정만 따라 해본다. docker image와 docker container의 차이점을 간단하게 확인하고 바로 시작해 보자! docker im..
2023.01.29
-
[WSL2][Ubuntu 20.04 LTS] pbcopy 사용방법
Ubuntu에서는 MAC OS 명령어인 pbcopy를 제공하지 않는다. 대안 방법으로 xclip을 설치해서 alias로 등록을 하고 사용을 해보려고 한다. 처음에 참고한 사이트는 다음과 같다. pbpaste && pbcopy for Ubuntu Linux 20.04 pbpaste && pbcopy for Ubuntu Linux 20.04. GitHub Gist: instantly share code, notes, and snippets. gist.github.com 결론부터 말하자면 WSL2에서 위 사이트 방법으로 진행을 해도 Error: Can't open display: (null) 에러가 뜬다. 대안 방법으로 clip.exe < fileName 명령어를 통해서 해결했다. Error: Can't op..
2022.08.20
-
[WSL2][Ubuntu 20.04 LTS] nodejs 설치 및 npm init
오늘은 윈도우 10의 WSL2, Ubuntu 20.04 LTS 환경에서 nodejs 설치, npm init , figlet으로 HELLO 찍어보기를 진행해본다. 원하는 Nodejs 버전을 설치하기 위한 설정 Nodejs version을 정해주지 않고 sudo apt install -y nodejs 설치 명령어를 사용해서 설치하면 원하는 LTS 버전이 설치되지 않는다. 원하는 LTS(Long-Term Support) 버전을 설치하려면 지정해주고 설치하는 게 좋다! 필자는 setup_16.x로 16 버전의 LTS를 설치해준다고 정해줬다. 자신이 원하는 LTS 버전이 있다면 steup_ 뒤에 숫자만 변경해주면 된다. curl -sL https://deb.nodesource.com/setup_16.x | sud..
2022.08.20
-
[CS] Java 8 Lambda
오늘은 Java 8 Lambda란 어떤 것이고 문법과 람다식을 사용하면 어떻게 코드가 간결해지는지 살펴본다. 목차 Lambda란? Lambda 문법 Lambda 작성 주의사항 함수형 인터페이스(Functional Interface) interface 생성 방법 vs 익명 클래스 사용 방법 vs 람다 사용 방법 람다(Lambda)란? 람다란 대용량 병렬 처리와 이벤트 처리를 위해서 Java 8부터 등장한 표현식이다. 함수(메서드)를 간단한 식으로 표현하는 방법이다. 람다는 익명 함수(이름이 없는 함수)이다 람다의 형태는 람다 파라미터와 람다 바디로 구성되어 있다. 람다 파라미터 -> 람다 바디 람다는 하나의 추상(abstract) 메서드만 가진 함수형 인터페이스일 때만 사용이 가능하다. 람다는 기존에 별도..
2022.07.27
-
[SQL][PGS] 입양 시각 구하기(2)
오늘은 프로그래머스 SQL문제에서 입양 시각 구하기(2) 에 대해서 리뷰해보려고 한다. https://school.programmers.co.kr/learn/courses/30/lessons/59413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중..
2022.07.16
-
[CS] Java 8 Stream
스터디에서 [알고리즘 + CS 스터디]를 진행하고 있다. 해당 스터디를 진행하면서 CS 관련 주제를 하나씩 정해서 학습한다. 스터디에서 정한 주제를 매 주 정리해보려고 한다. 오늘은 Stream에 대해서 정리를 한다. 목차 Stream이란? Stream의 3단계 구조(생성 -> 중간 연산 -> 최종 연산) Stream의 특징 Stream의 장단점 Stream을 사용하면 성능은 좋은가? Stream이란? 스트림은 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 값 요소 스트림은 컬렉션 반복을 멋지게 처리하는 기능 - 모던 자바 인 액션 스트림은 컬렉션의 요소를 하나씩 참조해 람다식으로 처리할 수 있는 반복자 - 이것이 자바다 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것 - 자바의 정석 유명..
2022.07.09
-
[Java][PGS][Level2] 오픈채팅방
오늘은 오랜만에 프로그래머스의 오픈채팅방 문제의 후기를 남겨본다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 문제는 너무 길어서 위의 링크로 접근해주시면 됩니다! 입력 제한사항 record는 다음과 같은 문자열이 담긴 배열이며, 길이는 1 이상 100,000 이하이다. 다음은 record에 담긴 문자열에 대한 설명이다. 모든 유저는 [유저 아이디]로 구분한다. [유저 아이디] 사용자가 [닉네임]으로 채팅방에 입장 - "Enter [유저 아이디] [닉네임]" (ex. "Enter uid1234 Muzi") [유저 아이디] 사용자가 채팅방에서 퇴장 ..
2022.07.07
-
[Java] 암호
설명 현수는 영희에게 알파벳 대문자로 구성된 비밀편지를 매일 컴퓨터를 이용해 보냅니다. 비밀편지는 현수와 영희가 서로 약속한 암호로 구성되어 있습니다. 비밀편지는 알파벳 한 문자마다 # 또는 *이 일곱 개로 구성되어 있습니다. 만약 현수가 “#*****#”으로 구성된 문자를 보냈다면 영희는 현수와 약속한 규칙대로 다음과 같이 해석합니다. 1. “#*****#”를 일곱자리의 이진수로 바꿉니다. #은 이진수의 1로, *이진수의 0으로 변환합니다. 결과는 “1000001”로 변환됩니다. 2. 바뀐 2진수를 10진수화 합니다. “1000001”을 10진수화 하면 65가 됩니다. 3. 아스키 번호가 65문자로 변환합니다. 즉 아스크번호 65는 대문자 'A'입니다. 참고로 대문자들의 아스키 번호는 'A'는 65번,..
2022.06.19
-
[Java] 문자열 압축
설명 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오. 단 반복횟수가 1인 경우 생략합니다. 입력 첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 줄에 압축된 문자열을 출력한다. 예시 입력 1 KKHSSSSSSSE 예시 출력 1 K2HS7E 예시 입력 2 KSTTTSEEKFKKKDJJGG 예시 출력 2 KST3SE2KFK3DJ2G2 첫 번째 풀이 문제 접근은 문자열을 압축할려면 같은 문자가 연속적으로 몇 번 반복되는지 체크를 하기 위해서 현재 문자와 다음 문자가 같다면 equalCount++ 를 증감해줬다. equalCount를 1로 할당한 이유는 ..
2022.06.19
-
[Java] 가장 짧은 문자거리
설명 한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요. 입력 첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다. 예시 입력 1 teachermode e 예시 출력 1 1 0 1 2 1 0 1 2 2 1 0 풀이 해당 문제는 문자열 word에 각 문자가 문자 target과 떨어진 최소 거리를 구하는 문제이다. 먼저, 왼쪽에서 오른쪽으로 최소 거리를 구했다. 현재 문자와 타켓이 같지 않으면 position++을 증감해주고, 같으면 떨어진 최소 거리는 0이기에 갱신했다. ..
2022.06.19
-
[Java] 숫자만 추출
설명 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다. 입력 첫 줄에 숫자가 섞인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다. 출력 첫 줄에 자연수를 출력합니다. 예시 입력 1 g0en2T0s8eSoft 예시 출력 1 208 replaceAll()과 Integer.parseInt()를 이용한 방법 replaceAll()에서는 [^0-9] 0~9가 아닌 문자는 모두 공백("")으로 치환시켜서 제거했다. g0en2T0s8eSoft 문자열에서 숫자만 추출을 ..
2022.06.15
-
[Java] 유효한 팰린드롬
설명 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다. 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다. 알파벳 이외의 문자들의 무시합니다. 입력 첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다. 출력 첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다. 예시 입력 1 found7, time: study; Yduts; emit, 7Dnuof 예시 출력 1 YES replaceAll과 leftIndex, rightIndex를 이용한 방법 해당 문제에서는 알파벳 이외의 문자들은 무시해야 한다는 전제 조건이 있다...
2022.06.14
-
[Java] 회문문자열
설명 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다. 입력 첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다. 출력 첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다. 예시 입력 1 gooG 예시 출력 1 YES while문과 leftIndex와 rightIndex를 이용한 방법 while 문으로 leftIndex가 rightIndex 보다 작을 때 까지 반복을 하며 문자를 접근했다. 회문 문자열이 아니면 answer = "NO"를 할당하고, break하고 종료로 풀..
2022.06.14
-
[Java] 중복문자제거
설명 소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요. 중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다. 입력 첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다. 예시 입력 1 ksekkset 예시 출력 1 kset StringBuilder.indexOf()으로 이용한 방법 StringBuilder로 notOverLapWord라는 변수로 중복되지 않는 단어를 선언했다. notOverLapWord에 indexOf()로 현재 인덱스에 문자가 존재하지 않는다면 첫 번째 문자이기에 append()를 해줘서 해결했다. package section01.E06_중복..
2022.06.14
-
[Java] 특정 문자 뒤집기
특정 문자 뒤집기는 char[] 배열의 값의 leftIndex, rightIndex를 이용해서 특수문자 일때는 continue하고, 알파벳 일때는 서로 swap을 하며 문제를 해결했다. 설명 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고, 특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요. 입력 첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다. 출력 첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다. 예시 입력 1 a#b!GE*T@S 예시 출력 1 S#T!EG*b@a 풀이 char[] syllables의 leftIndex의 값과 rightIndex의 값이 알파벳이 아니라 특수문자인 경우에는 leftIndex는 증감, rightIndex는 가감을 ..
2022.06.12
-
[Java] 단어 뒤집기
단어 뒤집기 문제는 여러 방법으로 문제를 해결했다. StringBuilder의 reverse() 함수를 이용한 방법 StringBuilder와 문자열 인덱스를 이용한 방법 char[]와 swap을 이용한 방법 while문에 leftIndex, rightIndex를 사용하여 swap을 이용한 방법 설명 N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요. 입력 첫 줄에 자연수 N(3 "doog" (leftIndex = 2 , rightIndex = 1) while (leftIndex < rightIndex)가 false 이기에 종료된다. package section01.E04_단어_뒤집기; import java.io.*; public class Main { public String[] ..
2022.06.11
-
[Java] 대소문자 변환
다시 코딩 테스트를 준비하면서 문제 리뷰를 진행하려고 한다. 해당 문제를 풀면서 첫 번째 풀이에는 Character의 메소드를 사용해서 풀이를 했다. 두 번째 풀이에는 A-Z, a-z 의 아스키 코드 범위를 비교연산자로 비교하면서 해결했다. 대소문자의 아스키 코드는 하단과 같다. 대문자 아스키 코드 : A(65) ~ Z(90) 소문자 아스키 코드 : a(97) ~ z(122) 설명 대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요. 입력 첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다. 문자열은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다...
2022.06.11
-
[프로그래머스 SQL 스터디 2기] 6주 차 TIL/후기
더보기 1. [프로그래머스 SQL 스터디 2기] 1주 차 TIL/후기 2. [프로그래머스 SQL 스터디 2기] 2주 차 TIL/후기 3. [프로그래머스 SQL 스터디 2기] 3주 차 TIL/후기 4. [프로그래머스 SQL 스터디 2기] 4주 차 TIL/후기 5. [프로그래머스 SQL 스터디 2기] 5주 차 TIL/후기 6. [프로그래머스 SQL 스터디 2기] 6주 차 TIL/후기 오늘은 마지막 6주 차인 CTE & 통계 쿼리와 윈도우 함수 & 그룹 함수를 학습한다. 개발을 진행하면서 통계 쿼리를 짜고 윈도 함수를 사용하는 일이 자주 있었다. 일단은 쿼리를 짜고 윈도우 함수도 어떻게 작동이 되는지 모르고 사용을 하고 있었다. 이번 스터디를 계기로 통계 쿼리와 윈도우 함수가 조금 덜 무서워졌다!! CTE ..
2022.04.13
-
[프로그래머스 SQL 스터디 2기] 5주 차 TIL/후기
더보기1. [프로그래머스 SQL 스터디 2기] 1주 차 TIL/후기2. [프로그래머스 SQL 스터디 2기] 2주 차 TIL/후기3. [프로그래머스 SQL 스터디 2기] 3주 차 TIL/후기4. [프로그래머스 SQL 스터디 2기] 4주 차 TIL/후기5. [프로그래머스 SQL 스터디 2기] 5주 차 TIL/후기6. [프로그래머스 SQL 스터디 2기] 6주 차 TIL/후기 5주 차 서브쿼리와 DDL 무결성 제약조건에 대해서 학습했다. 단테님이 4주 차를 진행하면서 이번 강의에서 서브쿼리도 중요하지만, DDL 무결성 제약조건 수업이 정말 중요하다고 하셨다. DDL 제약조건은 데이터베이스의 근간이기 때문에 그렇게 말씀하신 거 같다! 개인적으로 서브쿼리는 지금도 어렵긴 하지만 정리하면서 다시 리마인드를 하자!!..
2022.04.10
-
[프로그래머스 SQL 스터디 2기] 4주 차 TIL/후기
더보기 1. [프로그래머스 SQL 스터디 2기] 1주 차 TIL/후기 2. [프로그래머스 SQL 스터디 2기] 2주 차 TIL/후기 3. [프로그래머스 SQL 스터디 2기] 3주 차 TIL/후기 4. [프로그래머스 SQL 스터디 2기] 4주 차 TIL/후기 5. [프로그래머스 SQL 스터디 2기] 5주 차 TIL/후기 6. [프로그래머스 SQL 스터디 2기] 6주 차 TIL/후기 4주 차는 DB에서 정말 중요한 집합과 조인에 대해서 학습했다. 집합 집합 연산자에는 합집합(UNION), 교집합(INTERSECT), 차집합(DIFFERENCE), 카티션 프로덕트(Catesian Product)가 존재한다. Union Compatible(합병가능) 제약 조건이란? UNION과 UNION ALL의 차이점은? ..
2022.03.29
-
[프로그래머스 SQL 스터디 2기] 3주 차 TIL/후기
더보기1. [프로그래머스 SQL 스터디 2기] 1주 차 TIL/후기2. [프로그래머스 SQL 스터디 2기] 2주 차 TIL/후기3. [프로그래머스 SQL 스터디 2기] 3주 차 TIL/후기4. [프로그래머스 SQL 스터디 2기] 4주 차 TIL/후기5. [프로그래머스 SQL 스터디 2기] 5주 차 TIL/후기6. [프로그래머스 SQL 스터디 2기] 6주 차 TIL/후기 3주 차는 그룹핑, 내장 함수, 갱신문에 대해서 집중적으로 학습했다. 2주 차 이후에 블로그를 꾸준히 작성을 하지 못하고 노션에 TIL만 작성을 하고 있었다. 마지막 주차에 코딩 테스트 전 복습 겸 하나씩 다시 정리를 시작한다. 그룹핑SQL에서 그룹핑은 GROUP BY 절을 사용해서 행(튜플)을 그룹화하는 것을 말한다. COUNT(*)와..
2022.03.29
-
[프로그래머스 SQL 스터디 2기] 2주 차 TIL/후기
더보기 1. [프로그래머스 SQL 스터디 2기] 1주 차 TIL/후기 2. [프로그래머스 SQL 스터디 2기] 2주 차 TIL/후기 3. [프로그래머스 SQL 스터디 2기] 3주 차 TIL/후기 4. [프로그래머스 SQL 스터디 2기] 4주 차 TIL/후기 5. [프로그래머스 SQL 스터디 2기] 5주 차 TIL/후기 6. [프로그래머스 SQL 스터디 2기] 6주 차 TIL/후기 2주 차에는 스키마 정의와 데이터 필터링을 학습했다. 해당 챕터에서는 내가 몰랐던 내용과 개인적으로 중요하게 생각한 내용들을 간략하게 적을 것이다. 강의에서 배운 중요한 내용은 많지만, 저작권의 문제도 있어서 간략하게 올린다. 매주 코딩 테스트 문제를 7~15개 정도 푸는데 문제에 대한 리뷰도 다음 기수분들의 학습에 방해가 되..
2022.03.11
-
[프로그래머스 SQL 스터디 2기] 1주 차 TIL/후기
더보기 1. [프로그래머스 SQL 스터디 2기] 1주 차 TIL/후기 2. [프로그래머스 SQL 스터디 2기] 2주 차 TIL/후기 3. [프로그래머스 SQL 스터디 2기] 3주 차 TIL/후기 4. [프로그래머스 SQL 스터디 2기] 4주 차 TIL/후기 5. [프로그래머스 SQL 스터디 2기] 5주 차 TIL/후기 6. [프로그래머스 SQL 스터디 2기] 6주 차 TIL/후기 정말 오랜만에 새로운 포스팅이다. 벌써 새내기 개발자 6개월 차이고 근무하다 보니 정신없이 시간이 갔다. 이번 포스팅을 기점으로 지속적으로 글을 올릴 것이다! IT 현업에 근무하면서 Java, SQL, JS 다방면에 지식이 필요했지만, 개인적인 업무로는 쿼리를 다루는 일이 많았다. 이전에 SQLD 자격증을 취득하기도 했고 그나..
2022.03.03
-
IBK 시스템 필기/기술면접/임원면접 최종합격 후기
2020년 조오금 늦은 상반기 IBK 시스템 신입에 지원을 했습니다.본 포스팅에는 필기시험/기술면접/임원면접 후기 및 결과에 대해서 작성했습니다. 필기시험 일정 - 7/24(토) 11:00 ~ 13:00결과발표 - 7/28(수) 11시기술면접 일정 - 8/10(화) 13:40결과발표 - 8/19(목) 11시 임원면접 일정 - 8/25(수) 14:30 결과발표 - 8/30(월) 14~15시먼저 해당 채용 과정의 결과는 최종 합격 입니다.2021년 08월 30일 오후 2~3시 가량에 임원면접 결과가 나왔습니다. 임원면접까지의 결과는 최종합격으로 9월 초에 입사를 합니다!!!!!!!!!!!!!!!!!!!!!!드디어 취뽀내요...후 필기시험총 100문제로 과목과 문항 수는 다음과 같습니다.IT 상식 ..
2021.08.10
-
[Algorithm][Python] 곶감(모래시계)
[문제] 곶감(모래시계) 현수는 곳감을 만들기 위해 감을 깍아 마당에 말리고 있습니다. 현수의 마당은 N*N 격자판으 로 이루어져 있으며, 현수는 각 격자단위로 말리는 감의 수를 정합니다. 그런데 해의 위치에 따라 특정위치의 감은 잘 마르지 않습니다. 그래서 현수는 격자의 행을 기준으로 왼쪽, 또는 오른쪽으로 회전시켜 위치를 변경해 모든 감이 잘 마르게 합니다. 만약 회전명령 정보가 2 0 3이면 2번째 행을 왼쪽으로 3만큼 아래 그림처럼 회전시키는 명령 입니다. 1행 10 13 10 12 15 10 13 10 12 15 2행 12 39 30 23 11 23 11 12 39 30 3행 11 25 50 53 15 => 11 25 50 53 15 4행 19 27 29 37 27 19 27 29 37 27 5..
2021.05.20
-
[Algorithm][Python] 자릿수의 합
[문제] 자릿수의 합 N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를 꼭 작성해서 프로그래밍 하세요. 입력 설명 첫 줄에 자연수의 개수 N(3 0: sum += x % 10 x = x // 10 return sum n = int(input()) a = list(map(int ,input().split())) max = -2147000000 answer = 0 for x in a: total = digit_sum(x) if total > max: max = total answer = x print(answer)
2021.05.19
-
[Algorithm][Python] 정다면체
[문제] K번째 큰 수 두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확 률이 높은 숫자를 출력하는 프로그램을 작성하세요. 정답이 여러 개일 경우 오름차순으로 출력합니다. 입력 설명 첫 번째 줄에는 자연수 N과 M이 주어집니다. N과 M은 4, 6, 8, 12, 20 중의 하나입니다. 출력 설명 첫 번째 줄에 답을 출력합니다. 입력예제 1 4 6 출력예제 1 5 6 7 문제 접근 N과 M을 입력받고, N+M의 합은 주사위가 나올 수 있는 최대합이므로 N+M의 합의 갯수만큼 0의 값을 가지는 배열을 만들어준다. N과 M을 이중 for문을 돌면서 두 주사위의 합의 인덱스에 +=1 을 해준다. dice 배열을 for문을 돌려서 if max값과 같으면 출력한다. 풀이..
2021.05.13
-
[Algorithm][Python] 대표값
[문제] K번째 큰 수 N명의 학생의 수학성적이 주어집니다. N명의 학생들의 평균(소수 첫째자리 반올림)을 구하고, N명의 학생 중 평균에 가장 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세 요. 답이 2개일 경우 성적이 높은 학생의 번호를 출력하세요. 만약 답이 되는 점수가 여러 개일 경우 번호가 빠른 학생의 번호를 답으로 한다 입력 설명 첫줄에 자연수 N(5
2021.05.13
-
[Algorithm][Python] K번째 큰 수
[문제] K번째 큰 수 현수는 1부터 100사이의 자연수가 적힌 N장의 카드를 가지고 있습니다. 같은 숫자의 카드가 여러장 있을 수 있습니다. 현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려 고 합니다. 3장을 뽑을 수 있는 모든 경우를 기록합니다. 기록한 값 중 K번째로 큰 수를 출력 하는 프로그램을 작성하세요. 만약 큰 수부터 만들어진 수가 25 25 23 23 22 20 19......이고 K값이 3이라면 K번째 큰 값 은 22입니다. 입력 설명 첫 줄에 자연수 N(3
2021.05.13
-
[Algorithm][Python] K번째 작은수
[문제] K번째 작은수 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. N개의 숫자로 이루어진 숫자열이 주어지면 해당 숫자열중에서 s번째부터 e번째 까지의 수 중 k번째로 작은 수를 출력하는 프로그램을 작성하세요. 입력 설명 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.첫 번째 줄에 테스트 케이스 T(1
2021.05.13
-
[Algorithm][Python] K번째 약수
[문제] K번째 약수 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면 6 ÷ 1 = 6 … 0 6 ÷ 2 = 3 … 0 6 ÷ 3 = 2 … 0 6 ÷ 4 = 1 … 2 6 ÷ 5 = 1 … 1 6 ÷ 6 = 1 … 0 그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다. 두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오. 입력 설명 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. 출력 설명 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하..
2021.05.13