gogoma의 등록된 링크

키자드에 등록된 총 196개의 포스트를 확인하실 수 있습니다.

Tistory

Macbook :: 클립보드 앱 Maccy 무료로 이용하기

Macbook에서는 클립보드 내역을 저장하고 꺼내쓸 수 있는 클립보드앱 Maccy가 있습니다. Maccy앱을 먼저 간단히 설명하자면, 앱을 열면 클립보드 내역을 확인할 수 있는 공간이 나와요. 만약 제가 1,2,3,4,5를 순서대로 복사를 했다고 가정을 할게요. 그럼 이렇게 클립보드 내역에 보관돼요. 텍스트 뿐만 아니라 말그대로 클립보드 내역이 그대로 보관되는 거라서 이미지도 보관됩니다. 근데 이거 AppStore에서는 유료거든요? 명령어를 통해서 다운로드하면 무료로 받을 수 있어요. brew install maccy그냥 터미널 열고 위의 명령어만 입력하고 기다리면 알아서 다운로드 됩니다. Homebrew를 사용한 적이 없거나 사용한지 오래 됐다면 업데이트 때문에 시간이 좀 걸릴 거예요. 그래도 기다리면..

Tistory

HTTPS에서 경고 없이 HTTP 리소스를 호출하는 방법

인증서가 있는 사이트에서 인증서가 없는 사이트를 호출할 때 mixed content 오류가 발생합니다. 우선 인증서가 있는 사이트에서 인증서가 없는 사이트를 호출하는 것은 문제가 될 수 있으므로, 인증서를 사용하는 것이 가장 좋은 방법입니다. 그러나 내부에서만 사용하는 사이트이거나 인증서를 구매할 수 없는 환경이라면 아래와 같은 방법으로 해결할 수 있습니다. 기본적인 Nginx 설정 방법에 대한 지식이 없어도 아래 설정을 따라만 해도 가능합니다. Nginx로 proxy_pass 설정하기 인증서가 있는 사이트라면, 해당 인증서를 사용해서 Nginx 설정을 하여 우회할 수 있습니다. Nginx가 중개자 역할이 되어 보안 연결을 호출한 것처럼 위장할 수 있습니다. Nginx 설정 server { # liste..

Tistory

리소스 직접 접근 차단하고 소스에서만 허용하기 (PHP + .htaccess)

출발점 이 글을 작성한 이유는 www.example.com/file/font.ttf 에 폰트가 저장되어 있고, 해당 url로 접근하면 폰트를 직접 접근하여 탈취할 수 있기 때문에 이를 방지하고 싶었습니다. 소스에서는 접근이 가능해야 하고, 외부에서 url을 통해 직접 접근하는 것은 막아야 했습니다. .htaccess 우선 직접 접근을 막는 방법은 간단합니다. 디렉토리가 file 이면 해당 디렉토리에 .htaccess에 아래 코드를 추가합니다. 만약 .htaccess가 없다면 새로 만들어서 추가합니다. Order Allow,Deny Deny from all 차단하고자 하는 확장자를 모두 추가합니다. PHP 이제 file을 읽어올 PHP소스를 작성합니다. 예를 들어 fileLoader.php 로 작성했습니다..

Tistory

CentOS 7 에서 git version 2.x 이상 설치하기

CentOS 7이 아니더라도 버전이 낮으면 sudo yum install git을 하더라도 git version 2.x 이상이 설치되지 않습니다. 저도 버전 1.8이 설치되어서 삭제 후 다시 설치했습니다. 기존에 설치된 git 제거 sudo yum remove git 의존성 설치 CentOS를 최신 상태로 업데이트한다. # CentOS 패키지 관리 도구를 최신상태로 업데이트 sudo yum update # 각종 코드를 컴파일하고 빌드하는 데 필요 sudo yum groupinstall "Development Tools" #Git을 빌드하는 데 필요한 추가 의존성 설치, 지금 설치해야 빌드 및 설치 과정에서 오류가 발생하지 않음. sudo yum install gettext-devel openssl-dev..

Tistory

나의 서버에 GitLab 설치하기 (Git, GitLab 설치 및 명령어)

권장사양 CPU : 4코어 이상 권장 메모리 : 4GB 이상 권장 (실행만 해도 3.5GB 정도 사용함, 사용자가 많을수록 많이 필요) 스토리지 : 데이터를 저장하기에 충분한 용량 필요 데이터베이스 : GitLab에 내장되어 있는 PostgreSQL을 기본적으로 사용하지만, 따로 데이터베이스를 사용하기 위해서 별도의 설정이 필요 (이 부분은 다루지 않습니다.) 나의 사양 운영체제 : CentOS 7 CPU : 4코어 grep 'cpu cores' /proc/cpuinfo | uniq 메모리 : 4GB free -h 디스크 : 459GB df -h Git 설치 시스템 업데이트 CentOS를 최신 상태로 업데이트한다. # CentOS 패키지 관리 도구를 최신상태로 업데이트 sudo yum up..

Tistory

Edge 브라우저 사용 시 'Alt+Tab' 탭 전환 막기

Window에서 Edge 브라우저를 사용할 때, Alt+Tab 단축키로 탭 전환이 되는 것이 불편했습니다. 어차피 Ctrl+Tab 기능으로도 탭 전환이 되기 때문에 Alt+Tab은 제거하고 프로그램끼리만 전환되기를 원하기 때문에, 이 기능을 제거하는 방법을 작성합니다. 탭 전환 기능 제거 edge://flags/ edge에서 해당 링크로 이동 Browser tab experiences in Windows 검색 Enable -> Disable로 변경 하단에 뜨는 다시 시작을 누르면 Edge가 다시 시작되면서 적용됩니다.

Tistory

DB에 저장된 JSON 데이터의 키 값을 쿼리로 추출하기

추출 예시 DB에 JSON 형식을 문자열로 그대로 저장했을 경우 이것을 쿼리로 추출하는 방법입니다. { "filename":"test.png", "buttons":[ {"name":"test_name","url":"test_url"}, {"name":"test_name2","url":"test_url2"} ] }만약 이렇게 저장된 JSON 형식의 문자열 데이터가 있을 때, "filename"의 값인 "test.png" 만 가져오는 것이 목표입니다. 예시 DBMS는 MySQL입니다. 추출 쿼리 MySQL 5.7 버전 이상 (MariaDB 10.3 이상) MySQL 5.7 버전 이상부터 사용 가능하며, 내장 함수 중 하나인 JSON_EXTRACT()를 사용할 수 있습니다. JSON 데이터가 저장된 컬럼에서 ..

Tistory

Nginx 환경 설정으로 원하는 자원(CSS,JS,이미지)만 캐싱하기

Nginx 설정 (수정 전) server { listen 80; location / { auth_request /auth; proxy_pass https://front_new; } #인증 location = /auth { ... } } 문제점 Nginx 환경 설정으로 자원(CSS,JS,이미지)만 캐싱한 이유 Angular 프로젝트의 웹서버로 Nginx를 사용하고 있습니다. 메인 화면에서 로그인이 되지 않은 상태면 로그인 url로 넘기고 있는데, 문제는 이 과정에서 Nginx에서 설정한 auth_request가 호출되지 않고 브라우저 캐시로 인해 redirect 되고 있습니다. 예를 들어 'example.com/' 을 호출하면 'example.com/login' 으로 redir..

Tistory

프로그래머스 - 공원 산책 JAVA :: 172928

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/172928 문제 이해하기 시작은 어떤 공간에서든 할 수 있다. 대각선으로는 이동할 수 없고, 동서남북으로만 이동할 수 있다. 장애물이 있는 곳으로는 이동할 수 없으며, 이동할 수 없는 경우는 해당 명령은 아예 취소한다. 외부로 벗어나는 경우는 이동할 수 없으며, 이동할 수 없는 경우는 해당 명령은 아예 취소한다. 문제 풀이 boolean[][] parkFull = new boolean[park.length][park[0].length()]; int x = 0, y = 0; int xWall = parkFull.length, yWall = parkFull[0].length; for(int i..

Tistory

Connection Pool 사용 시 release() 코드 위치의 중요성

관리하고 있는 채팅 시스템이 있는데 데이터베이스 연결 시 Connection Pool을 사용하고 있습니다. 코드는 커넥션을 얻고, 데이터베이스 결과값을 가져온 후에 다시 커넥션을 반환하는 과정으로 작성되어 있습니다. 커넥션 반환 문제 그러던 중 커넥션 풀을 사용할 때 문제가 생겼습니다. 커넥션이 계속 증가하고 있었는데, 그러다보니 커넥션 수 제한에 걸려서 서버 오류가 발생하기도 했습니다. 이 문제를 해결하기 위해 pool 생성할 때 connectionLimit을 크게 올려보기도 했지만 채팅 서버에서는 오류가 나지 않지만, DB서버 과부하로 처리가 매우 느려졌습니다. 마찬가지로 max_connections, wait_timeout 도 변경했지만 사용량이 많을 때는 속도가 상당히 떨어졌습니다. 그래서 이런 ..

Tistory

AWS Lightsail에서 파이썬 여러 버전 관리 및 사용 :: pyenv

pyenv 여러 버전의 Python을 사용하기 위해서 pyenv를 사용했습니다. AWS Lightsail에서는 pyenv를 설치하기 위해서 사전에 설치해야 할 패키지가 있습니다. 먼저 설치해야 할 패키지 sudo yum install @development zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl11 openssl11-devel xz xz-devel libffi-devel findutils tk-devel -y 각 패키지가 필요한 이유 @development 이 패키지 그룹은 일반적인 개발 도구 및 라이브러리(예: gcc, make 등)를 포함하고 있습니다. Python을 소스에서 빌드하려면 이러한 도구가 필요합니다...

Tistory

메모리가 부족한 AWS Lightsail에서는 스왑 공간을 활용하자

AWS Lightsail을 사용중이라면 보통 개발용서버 또는 간단한 용도일텐데, 조금만 무거운 작업을 실행하면 메모리 부족 현상을 만나게 됩니다. (저는 React 빌드를 하려고 하는데 메모리 부족 현상을 만났습니다.) 이를 해결하기 위해서 swap space를 활용해 디스크의 일부를 가상 메모리로 사용하여 물리적인 메모리 공간이 부족할 때 시스템이 사용할 수 있는 추가적인 메모리로 활용했습니다. swap space swapfile 생성 sudo fallocate -l 2G /mnt/swapfile 경로는 원하는 경로로 지정하면 됩니다. swapfile 권한 설정 sudo chmod 600 /mnt/swapfile swap space 설정 sudo mkswap /mnt/swapfile swap 활성화 s..

Tistory

프로그래머스 - 햄버거 만들기 JAVA :: 133502

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/133502 문제 이해하기 재료의 순서는 무조건 [빵, 야채, 고기, 빵] 순서가 되어야 하고, 그 재료를 빼더라도 남은 재료의 순서는 보존해야 하는게 핵심입니다. 예제를 보면 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵] 3번째부터 [빵, 야채, 고기, 빵]이 첫 번째 햄버거가 됩니다. 첫 번째 햄버거의 재료를 제외하면 [야채, 빵, 야채, 고기, 빵]이 남게 됩니다. 2번째부터 [빵, 야채, 고기, 빵]이 두 번째 햄버거가 됩니다. 재료가 담긴 배열을 순서대로 수행하면서 햄버거가 완성되면 재료를 빼고 기존 재료들은 기억하고 있으면서, 다음 재료를 순서대로 가져오면 됩니다. 예..

Tistory

Python Web Scraping :: PS Plus 게임 카탈로그 만료일 추출하기

목적 PS Plus 게임 카탈로그는 영구적으로 등록되는 게임이 아니다. 위 이미지에 ‘2023/2/22 오후…’ 처럼 만료일이 정해져 있는데, 만료일은 3개월 이내가 되면 사이트에 노출되어 확인할 수 있다. 그러나 만료일이 예정된 것만 따로 찾아볼 수 없으며, 리스트에서 직접 하나씩 눌러서 확인해야 하기 때문에 어떤 게임이 만료되는지 확인하기 매우매우매우 귀찮다. (약 250~300개의 게임을 모두 눌러서 확인해야 한다…) 그래서 웹스크래핑으로 모든 게임들의 목록과 PS4/PS5 지원 여부도 추출하고, 그 중에서 만료 예정일도 함께 추출하는 것이 목적이다. 기획 웹 스크래핑으로 PS Store 게임 카탈로그(https://store.playstation.com/ko-kr/category/05a2d027-..

Tistory

Amazon Linux 서버에서 Selenium 사용하기

AWS Amazon Linux 2 환경에서 google-chrome-stable 패키지로 설치하려 했으나, “gpg-key” 관련 오류가 지속적으로 발생하고, 이를 무시하려고 해도 “Segmentation Fault” 오류가 발생 해당 오류를 해결하려고 많은 시간이 소요되어 기록함. 서버 환경 NAME="Amazon Linux" VERSION="2" ID="amzn" ID_LIKE="centos rhel fedora" VERSION_ID="2" PRETTY_NAME="Amazon Linux 2" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2" HOME_URL="https://amazonlinux.com/"명령어 $ cat os-release 로..

Tistory

AWS Lightsail에서 React 빌드&배포 시 멈추는 현상 (메모리 부족)

원인 AWS Lightsail에서 테스트 삼아 React를 빌드하려고 했는데 빌드가 완료되지 않고 계속 멈추는 현상이 발생했다. 내 인스턴스의 RAM은 512MB인데, React는 빌드 시 규모가 조금만 커져도 메모리 부족으로 빌드가 멈춰버리는 현상이 생기는 것이다. 아마 Lightsail 뿐만 아니라, 다른 서버도 RAM 용량이 부족하면 같은 현상을 겪을 것이다. 해결 방법 스왑메모리 설정 부족한 RAM 용량을 DISK의 용량으로 대체하는 방법이다. 당연히 DISK를 사용하는 것이기 때문에 성능면에서는 현저하게 떨어지지만 메모리 부족으로 인해 빌드가 중단되는 현상은 해결할 수 있다. 운영용으로는 부적합하지만 테스트 할 때에는 사용하기 좋다. $ sudo dd if=/dev/zero of=/mnt/swa..

Tistory

프로그래머스 - 푸드 파이트 대회 JAVA :: 134240

문제 문제 링크 코딩테스트 연습 - 푸드 파이트 대회 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 ..

Tistory

프로그래머스 - 크기가 작은 부분 문자열 JAVA :: 147355

문제 문제링크 코딩테스트 연습 - 크기가 작은 부분 문자열 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 제한사항 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 ..

Tistory

프로그래머스 - 개인정보 수집 유효기간 JAVA :: 2023 KAKAO BLIND RECRUITMENT :: 150370

문제 문제 링크 코딩테스트 연습 - 개인정보 수집 유효기간 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다.당신은 오늘 날짜로 파기해야 할 개..

Tistory

프로그래머스 - 옹알이 (2) JAVA :: 133499

문제링크 코딩테스트 연습 - 옹알이 (2) | 프로그래머스 스쿨 (programmers.co.kr) 문제 이해하기 발음할 수 있는 단어는 “aya”, “ye”, “woo”, “ma” 4개의 단어 뿐이다. 중복되어 나열된 단어는 발음할 수 없다. 불가능 : “ayaaya”, “yeye”, “woowoo”, “mamama” 가능 : “ayaye”, “wooma”, “mawoo”, “yemawoo”, “mawooma” 중복되지만 않고, 발음할 수 있는 단어만 나열되면 된다. 문제풀이 1번 풀이 (스택) 이전 단어의 중복을 체크하기 위해 Stack을 활용 import java.util.ArrayList; import java.util.List; import java.util.Stack; public class ..

Tistory

프로그래머스 - 콜라 문제 JAVA :: 132267

문제 문제 링크 코딩테스트 연습 - 콜라 문제 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서 1..

Tistory

프로그래머스 - 삼총사 JAVA :: 131705

문제 문제 링크 코딩테스트 연습 - 삼총사 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때..

Tistory

MySQL/MariaDB :: 특정 날짜 사이의 년,월,주,일 Group By (with PHP)

특정 날짜 사이의 년,월,일 Group By 하는 포스팅은 꽤 많았지만, 특정 범위의 날짜만 구하는 것이 아니라, 넓은 범위의 날짜를 구한 후 Group By 하는 방식으로 되어 있었다. 나는 정확히 특정 범위의 날짜만 구해서 처리속도도 최소화 하고 싶었다. 기존에 사용했던 코드 select stat_date from ( select adddate('[시작날짜]',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) stat_date from (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 u..

Tistory

프로그래머스 - 숫자 짝꿍 JAVA :: 131128

문제링크 숫자 짝꿍 | 프로그래머스 스쿨 (programmers.co.kr) 문제 이해하기 3 ≤ X, Y의 길이(자릿수) ≤ 3,000,000입니다. 나름 신경 쓴다고 썼는데 이것 때문에 시간을 많이 날렸다. 단순히 삼백만이 아니라 자릿수 삼백만이다… 어마어마한 숫자가 올 수 있다는 뜻 같은 수가 중복될 수 있다. X = "5255", Y = "1255"일 중복되는 수는 2, 5, 5이다. 주의할 점은 X의 5는 3개이지만 Y에는 2개만 있으므로 5는 2개만 짝꿍이다. 짝꿍이 없다면 "-1"을 반환한다. 기본적으로 숫자 개념이므로 "000..."같은 수는 없으므로 0으로 시작하면 0을 반환한다. 문제풀이 1번 풀이 (시간초과) import java.util.Arrays; public String sol..

Tistory

JQuery :: paste or cut event to textarea in mobile :: 모바일 환경의 textarea 에서 잘라내기, 붙여넣기 이벤트 감지

textarea에서 keyup으로 입력한 값의 이벤트를 감지하고 후처리하는 기능이 있는데, 붙여넣기 또는 잘라내기의 경우는 keyup의 이벤트를 감지하지 못했다. 문제의 코드 $(document).on("keyup", "#contents", function(){ // event } keyup은 모바일에서 자판으로 입력하는 것들은 감지했지만 붙여넣기, 잘라내기 등의 이벤트는 감지하지 못 해서 원하는 기능이 제대로 작동하지 않았다. 해결한 코드 $(document).on("input", "#contents", function () { // event } input은 모든 변경내역을 감지했으며 해당 코드로 해결할 수 있었다.

Tistory

Nginx :: 이중화 과정에서 발생한 오류들 정리

Nginx 이중화 하면서 발생한 오류들 정리 Address already in use 사용하려는 포트가 이미 사용중인 경우 사용중인 포트 확인하기 (만약 사용중인 포트가 꼭 필요한 포트라면 다른 포트로 우회해도 됨) $ netstat -lntp 중지시켜도 상관이 없다면 프로세스 중지시키기 $ kill -9 [pid번호] Permission denied 포트 권한이 없어서 발생하는 오류 포트가 열려있는데도 오류가 발생한다면 아래 CentOS 보안 정책에 의해 막혔을 수도 있음. 포트를 추가해보고 재시도 포트 추가 $ semanage port -a -t http_port_t -p tcp [포트 번호] 포트 확인 $ semanage port -l | grep http_port_t unable to verify..

Tistory

Nginx :: 이중화, SSL, WebSocket

각 서버의 포트별로 나누어 이중화 하는 방법 데이터베이스 이중화는 MySQL/MariaDB :: 단방향, 양방향 이중화 (Replication) 에서 확인할 수 있습니다. 테스트 서버 정보 대상서버: 0.0.0.1 대상포트: 5000, 5010, 5020 Nginx 환경 설정 (기본) SSL 인증없이 HTTP로 접속하는 경우 upstream serv_a { server 0.0.0.1:5000; server 0.0.0.1:5000 backup; } upstream serv_b { server 0.0.0.1:5010; server 0.0.0.1:5010 backup; } upstream serv_c { server 0.0.0.1:5020; server 0.0.0.1:5020 backup; } server {..

Tistory

SSL :: crt와 key 파일로 pfx 만들기

pfx 파일을 사용해야만 하는 경우가 생겼습니다. 가지고 있는 crt 파일과 key 파일로 pfx 파일을 만드는 방법 CentOS 7, OpenSSL 1.0.2k-fips 코드 openssl pkcs12 -export -in [crt파일] -inkey [key파일] -out [pfx파일] openssl pkcs12 -export -in aaa.crt -inkey aaa.key -out aaa.pfx 이후 암호를 입력하면 되는데, 암호는 필수가 아니라서 입력하지 않아도 된다. 참고자료 Export Certificates and Private Key from a PKCS#12 File with OpenSSL

Tistory

MySQL/MariaDB :: 단방향, 양방향 이중화 (Replication)

데이터베이스 이중화에 대한 내용 2대 이상의 DBMS를 나눠서 데이터를 저장한다. 삽입, 수정, 삭제 모두 복제할 수 있으며, 함수까지도 복제가 가능하다. 부분적으로 복제하는 것도 가능하다. CentOS 7, mysql Ver 15.1 Distrib 10.3.37-MariaDB 데이터베이스 양방향 이중화 my.cnf 설정 1번 서버 my.cnf ... [mysqld] server-id=1 log-bin=binlog binlog_format=mixed sync_binlog=1 binlog_cache_size=2M max_binlog_size=512M expire_logs_days=7 log-bin-trust-function-creators=1 ... 2번 서버 my.cnf ... [mysqld] serve..

Tistory

CentOS7에 nvm, nodejs 설치하기 :: nvm, nodejs install for CentOS7

nvm install wget install 만약 wget이 설치되어 있지 않다면 wget을 먼저 설치해야 합니다. yum install wget nvm install wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash 만약 설치가 완료될 때 NVM_DIR 이 export 되지 않았다면 직접 추가해야 합니다. nano ~/bashrc export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" 설치 완료 후 소스 동기화..

Tistory

CentOS7에 MariaDB 설치하기 :: MariaDB install for CentOS7

MariaDB 저장소 추가 MariaDB를 다운받기 위해서는 yum 저장소에 MariaDB 저장소를 추가해야 합니다. vi /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64/ gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 baseurl의 경우 본인이 설치해야 하는 버전과 설치 환경에 맞게 입력해야 합니다. http://mirror.mariadb.org/yum/ 경로에서 확인할 수 있습니다. 저장 후 yum에 저장소가 제대로 추가 되었는지 확인합니다. yum repolist MariaDB 설치 yum i..

Tistory

nginx :: [warn] the "ssl" directive is deprecated 오류 해결

오류 nginx 설정하는 과정에서 인증서를 추가하고 재시작 했더니 인증서 추가한 부분에 모두 경고가 발생 nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/default.conf:22 nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/default.conf:40 nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directi..

Tistory

Python :: virtual enviroment setting for windows :: 윈도우에서 가상환경 세팅하기

Python :: virtual enviroment setting for windows :: 윈도우에서 가상환경 세팅하기 venv venv는 Python 가상환경 관리를 해주는 내장 모듈입니다. 단, Python3에서 내장된 모듈로 Python2에서는 사용이 불가능합니다. Python2에서는 virtualenv라는 외부 패키지를 사용해야 합니다. 가상환경 생성 및 연결 #cd [프로젝트 경로] cd C:\venv-test #python -m [가상환경 이름] python -m venv venv-test ###다음은 명령 도구에 맞게 실행하세요.### #[가상환경 이름]\Scripts\activate.bat - cmd .\venv-test\Scripts\activate.bat #[가상환경 이름]\Scr..

Tistory

노마드코더 파이썬 챌린지 후기

노마드코더 파이썬 챌린지 후기 챌린지를 시작한 이유 파이썬을 잠깐 공부했었는데, 거의 까먹은 거나 다름 없어서 공부도 하고 간단한 프로젝트도 만들고 싶어서 무료 챌린지를 시작했습니다. 챌린지 과정 일요일을 제외한 월~토 꾸준히 강의를 들어야하며 결과물을 제출해야 합니다. (결과물을 제출할 지식이 이미 있다면 꼭 강의를 듣지는 않아도 됩니다) 강의 초반부에는 간단한 퀴즈의 답만 제출하지만, 강의 후반부에는 직접 코드를 작성해 결과물을 제출해야 합니다. Slack에 노마드코더 커뮤니티가 있습니다. 커뮤니티에는 이미 전 기수 챌린지 선배들의 질의응답 내용들도 있고, 현재 챌린지를 진행하는 사람끼리 서로 질문을 주고 받을 수 있습니다. 챌린지 결과 과제를 제출하고 1주일 후에 결과가 나옵니다. 무사히 챌린지 졸..

Tistory

JavaScript / Vanilla JS :: input file 이미지 미리보기, 삭제 :: image preview and remove

input file 로 이미지 업로드를 하는 과정에서의 이미지 미리보기, 이미지 삭제 구현입니다. input file multiple 은 아래 글을 참고하세요. (준비중) html 삭제 input file 의 이름은 #_img 이고 각 class는 #-img-section, #-img-preview, #-img-remove 로 정하면 됩니다. #에 원하는 네이밍을 부여하시면 됩니다. 이 부분이 아래에서 쓰일 tag 명칭이 됩니다. src="이미지경로" 에 이미지가 있다면 src="이미지경로" 에 이미지가 없다면 #을 넣어주세요. 이렇게 나오도록 javascript 를 작성합니다. 에러 처리는 onerror로 해도 되고, js에서 이벤트 error를 감지해서 처리해도 됩니다. javascript js 코드..

Tistory

cafe24 웹호스팅 서버 index 페이지 변경하기 (.htaccess, Apache, PHP)

cafe24 웹호스팅 서버를 사용하고 있는데, 도메인만 입력 시 접근되는 인덱스 페이지의 경로를 바꾸고 싶었습니다. 해당 방법은 서버에서 직접적으로 설정을 바꿀 수 없는 경우 활용해야 합니다. 서버에서 직접 설정을 바꿀 수 있는 경우는 이 방법을 사용하지 않는 것이 좋습니다. 첫 번째 방법 일반적 첫 번째 시도했던 방법은 redirect 방법입니다. if (defined("_INDEX_")) { header("Location: "이동경로"); return; } 기존 인덱스 페이지가 호출되는 부분 상단에 해당 코드를 추가합니다. 그누보드 예를 들어 그누보드를 사용한다면 아래와 같습니다.

Tistory

a tag disable :: a 태그 동적 비활성화 :: a 태그 링크 제거

a tag를 사용할 때 동적으로 disable처리를 해주어야 할 때가 있습니다. a tag에는 따로 disable속성이 없습니다. 그래서 동적으로 href를 변경하거나 지워야 합니다. 해결한 과정을 기록합니다. 방법 a tag 에 data-href 로 링크를 미리 담아둡니다. 또는 동적으로 여러개를 써야 한다면, data-href1, data-href2 이런 식으로 미리 담아두는 방법도 있습니다. 이벤트가 있을 경우 href 속성 값의 유무에 따라 동적으로 값을 추가하고 뺍니다. 테스트 코드 준비 버튼을 클릭하면 a 태그의 링크를 지우고, 다시 클릭하면 a 태그의 링크를 살리는 테스트를 진행하겠습니다. 결과물 코드 HTML 소스 toggle button 구글로 이동 이동JQuery 방식 $(documen..

Tistory

git :: remote force pull / 원격 브랜치 강제로 pull

방법1 (local branch 작업 무시) git checkout master git fetch --all git reset --hard origin/master git pull origin master command detail checkout git checkout master local branch를 master로 변경 fetch git fetch --all remote brnach의 최신 내역을 local에 가져옵니다. reset git reset --hard origin/master 만약 이미 local branch의 작업 내용을 commit 했다면 reset 으로 commit 내역을 삭제합니다. pull git pull origin master remote -> local 방법2 (local..

Tistory

Python :: virtualenv setting with homebrew for macOS M1 :: 맥에서 homebrew로 가상환경 설정하기

macOS M1 환경에서 homebrew를 활용해 Python을 설치하고, pyenv를 활용해 가상환경을 만들고, autoenv를 활용해 각 프로젝트별로 가상환경을 자동으로 관리합니다. 만약 homebrew가 설치되어 있지 않다면 MacBook M1 Homebrew Install를 참고하세요. pyenv install pyenv brew install pyenv homebrew로 pyenv를 설치합니다. change python version echo 'eval "$(pyenv init --path)"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc pyenv로 python의 global version을 바꾸기 위해서 환경 설..

Tistory

git :: 다른 branch의 특정 파일만 가져오기

해당 방법은 A-branch에서 B-branch의 특정 파일을 가져오는 방법입니다. A-branch

Tistory

티스토리 마크다운 파일/이미지 업로드 간단하게 하기

마크다운으로 티스토리 글을 작성하다보면 불편한 점이 생긴다. 이미지 업로드와 파일 업로드가 불편하다. 기본적으로 마크다운에서는 이미지,파일 모두 링크로 표현해야 하는 방식이기 때문에 저는 구글 드라이브에 업로드 후 링크를 복사해 사용했었습니다. 이 과정에 많은 불편함이 있어 조금이나마 불편함을 해소하고자 할 때 사용하는 방법입니다. 기본적으로 티스토리의 cdn을 활용하는 방법이므로 만약 별도의 마크다운 에디터를 활용하지 않고 티스토리에서 바로 작성한다면 티스토리 글쓰기 창을 2개 띄워놓고 하시는 것을 추천합니다. 이미지 업로드 티스토리에 이미지 업로드 티스토리 기본 모드에서 사용하고자 하는 이미지를 복사해 붙여넣기 합니다. 이런 상태가 되어야 합니다. 링크 복사 & 붙여넣기 크롬 기반 브라우저 붙여넣기 ..

Tistory

정규식 후방탐색 사파리 대체

크롬 기반 브라우저에서는 정규식 후방탐색을 지원하지만, 사파리에서는 후방탐색을 지원하지 않기 때문에 다른 방법으로 대체해야 합니다. 대체하는 방법을 작성합니다. 후방탐색 일반적인 사용 방법 var input = `test string`; var regExp = /(?

Tistory

[Solution] MongoDB connect error for Windows :: connect ECONNREFUSED

MongoDB Compass로 localhost:27017 연결 시도 시 오류가 발생했습니다. 해당 오류를 해결하는 과정을 기록합니다. 오류 발견 localhost 접속을 위해 mongodb://localhost:27017를 시도 오류 connect ECONNREFUSED 127.0.0.1:27017 원인 mongod, mongo 서비스가 켜져 있지 않은 상태 근본적인 원인은 위와 같지만, 켜지지 않은 이유는 아래 해결에서 설명 해결 mongo 서비스 실행 mongod > mongo 순서로 실행 서비스의 경로 : C:\Program Files\MongoDB\Server\\bin 별도로 환경 변수 PATH가 잡혀 있으면 바로 다음으로 넘어가셔도 됩니다. mongod.exe, mongo.exe 순서대로 직접..

Tistory

JSFiddle에서 jQuery 사용하기

간단한 html/css/js 를 테스트 할 때에는 JSFiddle을 주로 사용했습니다. JSFiddle에서는 기본적으로 javascript 문법만 지원하기 때문에 jQuery를 별도로 추가해야 사용할 수 있습니다. 해당 과정을 기록합니다. JSFiddle에 jQuery 경로 추가 JSFiddle 접속 https://jsfiddle.net/ Resources 클릭 JavaScript/CSS URL에 jQuery 경로 입력 후 +버튼 클릭 주의할 점은 script 문법이 아닌 URL 경로 그대로를 입력해야 합니다. ex) https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js Resources에 jquery.min.js가 추가되었는지 확인합니다...

Tistory

Git ERROR: You're using an RSA key with SHA-1, which is no longer allowed [Solved]

오류 ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type. Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information. 새로운 환경에서 ssh-keygen을 사용할 수 없는 상황이라 온라인으로 RSA 키를 생성하고 GitHub Push 했는데 오류가 발생했습니다. 원인 공식 블로그(Improving Git protocol security on GitHub | The GitHub Blog)에 따르면 이제는 SHA-..

Tistory

프로그래머스 - 성격 유형 검사하기 :: 2022 KAKAO TECH INTERNSHIP :: 118666

문제 링크 프로그래머스 - 성격 유형 검사하기 문제 이해하기 성격 유형 종류는 총 8개로 고정이다. 지표 번호 성격 유형 1번 R, T 2번 C, F 3번 J, M 4번 A, N 점수는 총 7개로 분류된다. 매우 비동의, 비동의, 약간 비동의, 모르겠음, 약간 동의, 동의, 매우 동의 단, input 데이터에 따라 어느 곳에 점수를 부여해야 하는지 달라진다. 배열 survey에는 성격 유형 종류 8개 중 각 지표가 쌍으로 들어간다. 각 지표끼리만 입력 받을 수 있고 지표내의 성격 유형 순서는 바뀔 수 있다. R, F: 이런 지문은 존재하지 않는다. (R, T, T, R) 각 지문의 성격 유형 순서는 바뀔 수 있다. 배열 survey와 choices의 요소는 1vs1로 매칭되는 요소이다. 점수는 세 가지 ..

Tistory

Cafe24 웹 호스팅 서버에 GitHub 연동하기

Cafe24 웹호스팅 서버를 사용하는 경우에는 GitHub를 연동하기 어렵습니다. Cafe24 웹호스팅 서버에서 GitHub 연동이 어려운 이유 git은 지원하지만 ssh-keygen은 지원하지 않아서 ssh 사용 시 GitHub를 연동하기 어렵다. 웹호스팅 서버와 GitHub를 연동하는 과정을 작성합니다. FTP/Shell 접속 허용 해당 방법은 FTP/SSH를 사용하는 방법이므로 SSH 접속설정을 허용해야 합니다. 호스팅관리 > FTP/Shell 접속설정 Shell(SSH) 접속 설정 : 허용 Key 설정 Cafe24에서는 ssh-keygen을 지원하지 않으므로 온라인으로 key를 생성해야 합니다. putty로 key를 생성할 줄 아는 분은 putty로 생성하셔도 됩니다. Key 생성 링크(www.w..

Tistory

티스토리 :: 링크를 새 창으로 여는 방법들

1. 본문의 모든 링크를 새 창으로 열고 싶을 경우 ... 2. 현재 글 내에서 목차 이동을 위한 링크가 있어 현재 글 링크를 제외하고 새 창을 열어야 하는 경우 ... 3. 특정 링크는 무조건 새 창으로 열고 싶은 경우 ... 4. 참고자료 컴질닷컴 https://comzil.com/2992

Tistory

프로그래머스 - k진수에서 소수 개수 구하기 :: 2022 KAKAO BLIND RECRUITMENT

문제 코딩테스트 연습 - k진수에서 소수 개수 구하기 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 문제가 복잡해 보이지만 간단히 해결할 수 있는 문제입니다. 문제의 핵심은 0P0, 0P, P0 해당 규칙에 포함되며 소수인 개수를 구해야 합니다. 0P0, 0P, P0 의 규칙은 0으로 Split 하면 쉽게 구할 수 있습니다. 지문의 예처럼 211020101011 을 0으로 Split하면 [ "211", "2", "1", "1", "11" ] 을 구할 수 있습니다. 해당 배열들이 소수인지 아닌지만 판별하면 됩니다. 코드1 class Solution { public int solution(int n, int k) { String n_to_k = changeNotation(n, k); int ..

Tistory

WARNING: UNPROTECTED PRIVATE KEY FILE 해결

경고 외부 환경에서 git 작업을 위해 새로 key를 생성해서 작업을 하다가 이런 귀여운 경고가 나왔어요. 경고라면서 오류처럼 더 이상 진행이 안 되더라구요... 원인 원인은 개인키가 소유자 외에도 변경 가능한 권한으로 되어 있어서 발생한 것입니다. 개인키가 보호받지 못하기 때문에 발생하는 경고입니다. 아마 권한을 확인해보면 그룹 또는 공개에도 권한이 부여되어 있을 거예요! 저는 filezilla를 사용중이라 GUI로 볼 수 있는데, 개인키(id_rsa) 경로에서 아래 커맨드를 통해 권한을 확인할 수 있습니다. ls -l 해결 소유자 권한의 읽기/쓰기 만 부여하면 되는데, 소유자가 수정할 권한까지 주려면 "쓰기" 권한까지 부여하고, 수정할 필요가 없다면 "읽기" 권한만 부여하면 됩니다. 커맨드로 수정하셔..

Tistory

프로그래머스 - 줄 서는 방법 JAVA :: 12936

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12936?language=java 문제 이해하기 순서대로 완전 탐색을 할 수도 있겠지만 (물론 시도해 봤지만) 시간초과가 발생합니다. 그래서 패턴을 찾아보는 것으로 생각을 바꿨습니다. 경우의 수 우선 경우의 수 구하는 방법은 n! 입니다. $3! = 3*2*1 = 6$ $4! = 4*3*2*1 = 24$ 공식 유도 n=4에서 15번째 수를 구해보겠습니다. 15번째 수는 [3,2,1,4] 입니다. 그러나 배열은 0부터 시작이므로 k=14로 계산을 시작합니다. 첫 번째 수 구하기 두 번째 수 구하기 세 번째 수 구하기 네 번째 수는 4만 남았으므로 생략하겠습니다. 공식은 위와 같고 코드로 풀어..

Tistory

예제로 정리한 정규식 패턴

예제 코드는 Javascript로 작성되었습니다. 예제 코드에 플래그 활용이 포함됩니다. 플래그를 모른다면 아래 글을 참고하세요. 정규 표현식/정규식(RegExp) 플래그(Flag) 자세하게 알아보자! 1. 기본 dot(.) : 줄바꿈(\n)을 제외한 모든 문자(특수문자 포함) var test = `1a 2b @#`; test.match(/./g) [ '1', 'a', '2', 'b', '@', '#' ] \d:모든 숫자 \D:숫자가 아닌 것(\d의 반대) var test = `1a 2b @#`; test.match(/\d/g) test.match(/\D/g) [ '1', '2' ] [ &#..

Tistory

Warning :: <html> element must have a lang attribute: The <html> element does not have a lang attribute

경고 element must have a lang attribute: The element does not have a lang attribute 웹 개발을 할 때 개발자도구를 열었더니 위와 같은 경고가 발생했습니다. 원인 html-lang-valid 규칙을 지키지 않았기 때문에 발생하는 경고입니다. 웹 페이지의 언어를 지정해야 한다는 규칙입니다. 웹 페이지의 언어를 지정하지 않으면 screen reader는 사용자가 설정한 기본 언어로 가정합니다. screen reader는 언어의 특성에 따라 서로 다른 사운드 라이브러리를 사용합니다. 만약 문서에서 읽을 언어가 올바르게 지정되어 있지 않다면 screen reader가 다른 언어로 문서를 읽으므로 혼란스러운 부분이 생길 수 있습니다. 이러한 부분으로 인..

Tistory

JavaScript 에서 정규식 활용하는 방법들

정규식 플래그에 관한 내용이 궁금하다면 아래 글을 참고해 주세요. 정규 표현식/정규식(RegExp) 플래그(Flag) 자세하게 알아보자! 정규식 패턴에 관한 내용이 궁금하다면 아래 글을 참고해 주세요. 예제로 정리한 정규식 패턴 1. Javascript에서 정규식을 만드는 두 가지 방법 RegExp 객체 const regExp = new RegExp(/reg/, 'g'); new RegExp(/pattern/, 'flag') RegExp 객체의 생성자를 호출해 정규 표현식을 만듭니다. 패턴과 플래그에 대한 자세한 내용은 다루지 않습니다. 해당 내용은 상단의 링크를 참고하세요. 정규 표현식 리터럴 const regExp = /reg/g; /pattern/flag 정규 표현식 리..

Tistory

PHP :: Cafe24 웹 호스팅 서버에서 SMTP 인증된 메일 발송하기

본 글은 Cafe24 웹 호스팅 서버에서 SMTP 인증된 메일을 발송하는 과정입니다. 꼭 Cafe24 웹 호스팅 서버 환경이 아니더라도 PHP로 SMTP 인증된 메일 발송이 필요하다면 3번부터 참고하시면 됩니다. 1. 무료 웹메일 신청 cafe24 호스팅센터에 로그인 후 아래 링크를 클릭해 무료 웹메일을 가입하세요. 카페24 호스팅센터/서버호스팅 - 무료웹메일서비스 (cafe24.com) [호스팅 관리 > 무료그룹웨어/웹메일 신청] 신청하기 클릭 후 "웹메일 관리자 비밀번호 등록" 란에 비밀번호를 입력하면 바로 웹메일 신청이 완료됩니다. 메뉴 찾기가 어렵거나 동영상으로 보고 싶으신 분은 아래 igotit 님의 동영상을 참고하세요. 웹메일 신청 동영상 2. 무료 웹메일 관리자 로그인 - 계정 확인 및 추가..

Tistory

정규 표현식/정규식(RegExp) 플래그(Flag) 자세하게 알아보자!

javascript 기반으로 작성합니다만, 플래그는 모든 언어에서 비슷하므로 플래그에 대한 이해에는 도움이 될 것입니다. 하단으로 내려갈수록 기존 플래그를 활용하는 부분도 있습니다. 원활한 이해를 위해 플래그 순서대로 읽어주세요! 정규식 패턴에 대한 내용이 궁금하다면 아래 글을 참고하세요. 예제로 정리한 정규식 패턴 1. 정규 표현식을 사용하는 방법 정규 표현식 선언 방법 // new RegExp('정규식', '플래그'); let regExp1 = new RegExp('hello', 'g'); // /정규식/플래그; let regExp2 = /hello/g; regExp1 new RegExp('정규식', '플래그')는 ..

Tistory

MacBook M1 ERROR :: 'Eclipse.app' 응용 프로그램을 열 수 없습니다.

오랜만에 이클립스 사용할 일이 있어서 열려고 했더니 열 수 없다는 오류가 발생했습니다... 해당 오류를 해결하는 과정을 남깁니다. 오류 Eclipse.app 실행 오류 뭐 오류가 났는데 따로 알려주는 것도 없습니다. ? 표시 눌렀더니 이렇게 나오네요... 아주 불친절합니다. 이럴거면 ?는 왜 있는 건지... 직접 찾아봐야겠네요ㅜㅜ 원인 찾아보니 이클립스 앱 내의 코드 서명이 깨졌기 때문에 발생한 오류입니다. 대부분 오류 원인들을 보니 MacOS 업데이트 이후 발생하는 오류였습니다. 그러고보니 저도 2일 전에 MacOS 업데이트를 했거든요. 공식문서에 따르면 App Store 외부에서 배포된 응용프로그램은 Apple에서 발급한 개발자용 ID인증서로 서명해야 한다고 합니다. 그런데 OS업데이트를 하면서 이 ..

Tistory

프로그래머스 - 숫자의 표현 JAVA

12924 https://school.programmers.co.kr/learn/courses/30/lessons/12924?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 연속된 자연수를 더해 n을 만들 때 연속된 자연수의 시작은 자신을 제외하면 n/2 를 초과할 수 없습니다. 예를 들어 n=6일 경우 3을 초과한 숫자는 연속된 수의 처음에 올 수 없습니다. 4부터는 무엇을 더해도 6을 초과하기 때문이죠 예시1) 6, 15 코드 public class Solution { public int solution(int n) ..

Tistory

프로그래머스 - 양궁대회 JAVA :: 2022 KAKAO BLIND RECRUITMENT :: 92342

문제 링크 코딩테스트 연습 - 양궁대회 | 프로그래머스 스쿨 (programmers.co.kr) 문제 이해하기 점수는 10~0점까지 11개의 점수가 있습니다. 남은 화살의 수가 어피치가 맞힌 화살의 수보다 크지 않으면 그 점수는 무시합니다. 라이언이 점수를 획득하는 조건은 무조건 어피치보다 많이 맞혀야 하니까요. 이제 예시와 함께 좀 더 자세히 살펴보겠습니다. 화살의 수는 총 5개이며 어피치는 10점(2개), 9점(1개), 8점(1개), 7점(1개) 입니다. 어피치의 화살 기본적으로 10점부터 시작해서 어피치의 점수를 빼앗는 조건 하에 점수차가 가장 많이 나는 조합을 찾는 방법으로 풀었습니다. 라이언의 화살 5발의 화살로 어피치의 점수를 빼앗는 첫 번재 방법은 10점에 3발, 9점에 2발을 쏴서 10점과..

Tistory

프로그래머스 - 최솟값 만들기 JAVA :: 12941

문제 링크 코딩테스트 연습 - 최솟값 만들기 | 프로그래머스 스쿨 (programmers.co.kr) 문제 풀이 한 번 뽑은 요소는 또 뽑을 수 없다. 그러므로 문제에서 두 배열의 각 원소를 곱하여 가장 작은 수를 구하는 방법은 각 배열의 (가장 작은 수 x 가장 큰 수) 1번 풀이 import java.util.Arrays; public class Solution { public int solution(int[] A, int[] B) { Arrays.sort(A); Arrays.sort(B); int sum = 0; for(int i=0; i

Tistory

프로그래머스 - 최댓값과 최솟값 JAVA

12939 코딩테스트 연습 - 최댓값과 최솟값 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 각 숫자들은 문자열 내에서 공백으로 구분되어 있습니다. ex) "1 2 -3 4" 공백으로 구분된 숫자를 가져와야 합니다. 각 숫자를 비교해 최솟값, 최댓값을 찾아야 합니다. 코드1 class Solution { public String solution(String s) { String[] sArr = s.split(" "); int min = Integer.MAX_VALUE, max = Inte..

Tistory

프로그래머스 - 주차 요금 계산 JAVA :: 2022 KAKAO BLIND RECRUITMENT

92341 코딩테스트 연습 - 주차 요금 계산 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 주차요금 계산식 주차 요금 = 기본 요금 + [(주차 누적시간 - 기본시간) / 단위 시간] * 단위 요금 주차 누적시간 모든 주차 시간을 분단위로 변환하면 계산하기 편합니다. 예를 들어 입차시간이 02:30 이면 (2*60) + 30 = 150 그리고 출차시간이 03:30 이면 (3*60) + 30 = 210 그러므로 주차 누적시간은 210(출차)-150(입차) = 60(분) 입차 후 출차기록이..

Tistory

@ng-bootstrap/ng-bootstrap 설치 시 오류 :: peer @angular/common@"^13.0.0" from @ng-bootstrap/[email protected]

1. 개발환경 2. 오류 @ng-bootstrap/ng-bootstrap+설치 $ ng add @ng-bootstrap/ng-bootstrap 설치 시도 시 아래와 같은 오류 발생 오류 내용 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: [email protected] npm ERR! Found: @angular/[email protected] npm ERR! node_modules/@angular/common npm ERR! @angular/common@"^14.0.0" from the root project npm ERR! npm ERR! Could not resolv..

Tistory

Angular :: Applying BootStrap / 부트스트랩 적용 (ng-bootstrap)

1. 프로젝트 생성 angular-cli @angular/cli 가 이미 전역에 되어 있는 분은 넘어가셔도 됩니다. $ npm i @angular/cli angular 프로젝트 생성 $ ng new angular-bootstrap-example 2. 버전 확인 및 패키지 설치 ng-bootstrap 설치 전, 자신의 버전을 확인해야 합니다. 해당 버전에 맞게 다른 패키지(bootstrap, ng-bootstrap)를 설치해야 하니까요. (생각보다 예민합니다. 버전을 최대한 맞춰주세요.) { "name": "angular-bootstrap-example", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build..

Tistory

Failed to load resource: the server responded with a status of 404 / 404 File not found / sourceMappingURL

1. 오류 저는 swiper-bundle.min.js 를 호출했더니 발생한 오류입니다. 2. 원인 문제의 원인을 이해하기 위해서는 sourceMap이 무엇인지 부터 알아야 합니다. 우선 JS와 CSS는 특정 도구(webpack)들을 이용해 번들링 되어 난독화&압축됩니다. 우리가 가끔 jquery 구문의 오류가 발생할 경우 어디서 발생한 오류인지 찾기 어려울 때가 있습니다. 브라우저의 디버깅 툴은 난독화된 코드에서 에러를 가리키기 때문에 어디서 발생한 오류인지 찾기 어렵습니다. sourceMap은 원본코드를 어떠한 알고리즘으로 인코딩하여 키워드로 매핑시켜놓은 것을 뜻합니다. 브라우저에서는 이렇게 인코딩된 것을 디코딩하여 복원시킬 수 있습니다. 그리고 이러한 sourceMap 파일을 연결하는 것이 sourc..

Tistory

프로그래머스 - N-Queen java :: 12952

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12952?language=java 문제 이해하기 퀸은 가로,세로,대각선으로 이동할 수 있습니다. 퀸 하나를 내려 놓았을 경우 빨간색(가로,세로,대각선)에는 다른 퀸을 놓을 수 없습니다. 그러므로 한 행에는 반드시 하나의 퀸만 올 수 있습니다. 행렬은 반드시 $(n * n)$ 행렬입니다. 이 핵심들은 당연하게 보이지만 중요한 이유는 한 행에는 반드시 하나의 퀸만 올 수 있고, 행과 열의 수가 같다면 2차원 배열로 풀지 않고 1차원 배열로도 풀 수 있습니다. 즉, 처리속도를 확 낮출 수 있다는 의미입니다. 대각선을 구하는 방법은 |기존 퀸의 행 - 배치할 퀸의 행| == |기존 ..

Tistory

프로그래머스 - 피보나치 수 java :: 모듈로 연산

문제 코딩테스트 연습 - 피보나치 수 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 시도1: 재귀함수 보통 피보나치는 재귀로 풀면 쉽습니다. 단, 재귀함수는 연산해야 할 양이 많아지면 차지하는 메모리의 양도 많아지고 처리속도의 효율도 매우 좋지 않아요. n은 최대 10만까지 입력이 가능하므로 재귀로 푸는 방법은 좋지 않은 방법입니다. (사실 저도 처음엔 재귀로 풀었다가 시간초과 나왔습니다.) 시도2: 반복문 재귀룰 포기하고 반복문으로 문제를 풀었습니다만... 문제는 7~14번이 계속 오류가..

Tistory

Angular(Front) + Node.js(Back) 연동하기

1. Angular.js 프로젝트 생성 @angular-cli 패키지 설치 $ npm i -g @angular/cli angular-cli 설치가 되어 있는 분은 다음으로 넘어가시면 됩니다. Angular.js 프로젝트 생성 $ ng new client Angular 프로젝트를 생성하고자 하는 경로에서 명령어 실행하세요. 서비스 실행 및 확인 $ ng serve --watch 또는 $ pm2 start "ng serve" --name "client" --watch pm2를 사용하시려면 pm2 패키지 설치가 되어 있어야 합니다. pm2 설치는 npm install -g pm2 로 설치하면 됩니다. 윈도우 환경에서는 pm2 start "ng serve" 를 다른 방법으로 실행해야 합니다. 계속 수정하면서 결..

Tistory

프로그래머스 - 행렬의 곱셈 java

코딩테스트 연습 - 행렬의 곱셈 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 핵심은 2개입니다. 새로 만들 배열의 크기를 정한다. 새로 만들 배열에 기존 배열(arr1, arr2)을 계산하여 삽입한다. 문제를 잘 보면 arr1에 arr2를 곱한 결과를 반환하는 것입니다. 우선 이차원 배열 곱하는 방법을 알아보면 arr1의 첫행 첫열의 값만 계산해 볼게요. [0] = \( [ (2*5)+(3*2)+(3*2), (2*4)+(3*4)+(2*1), (2*3)+(3*1)+(2*1) ] \) 입니..

Tistory

프로그래머스 - N개의 최소공배수 java

12953 풀이 최소공배수 구하는 방법은 두 가지 방법이 있습니다. 1. 최대공약수를 이용하는 방법 2. 소인수분해를 이용하는 방법 두 가지 방법으로 풀어보겠습니다. 풀이1 (최대공약수 이용) public int solution(int[] arr) { int lcm = arr[0]; for(int i=1; i

Tistory

Node.js + express-session + db(MariaDB/MySQL) 연동 예제 :: 로그인 구현

1. 기본 시작 소스 안내 기본 소스는 branch::ex-auth 에서 시작하며, 완성된 소스는 branch::ex-auth-mysql 입니다. https://github.com/gogoma-code/node-express-auth.git node와 express-session을 활용하는 기본(branch::ex-auth가 만들어지는 과정)은 아래 글을 참고해 주세요. Node.js + express-session :: 프로젝트 생성부터 로그인 구현하기 2. MySQL 예제 테이블 생성 기본적으로 MySQL은 설치가 되어 있다는 가정 하에 진행합니다. SQL 예제 테이블 생성문 /* 만약 test 데이터베이스가 이미 있다면 다른 이름을 사용하세요. */ CREATE DATABASE `test`; USE..

Tistory

프로그래머스 - JadenCase 문자열 만들기 java :: 12951

문제 링크 코딩테스트 연습 - JadenCase 문자열 만들기 | 프로그래머스 스쿨 (programmers.co.kr) 문제 풀이 1번 풀이 모든 문자를 직접 순회하며 조건에 맞게 대/소문자 치환 public String solution(String s) { StringBuilder sb = new StringBuilder(); boolean flag = true; for(char ch : s.toCharArray()) { sb.append(flag ? Character.toUpperCase(ch) : Character.toLowerCase(ch)); flag = (ch == ' ') ? true : false; } return sb.toString(); } 대문자가 되는 기준은 첫문자와 ..

Tistory

프로그래머스 - 하노이의 탑 java (재귀/반복문) :: 12946

문제 링크 코딩테스트 연습 - 하노이의 탑 | 프로그래머스 스쿨 (programmers.co.kr) 문제 이해하기 하노이의 탑 문제는 재귀 함수를 연습하는 대표적인 문제입니다. 재귀 함수를 구현하기 위해서는 규칙을 찾아야 합니다. n=3일 경우로 예를 들어보겠습니다. 이렇게 초기 상태인 [주황+노랑+초록]을 hanoi(n) 이라고 표현하겠습니다. 가장 큰 원판을 3번기둥으로 옮기는 방법은? 가장 아래에 있는 주황색 원판을 3번 기둥으로 옮기기 위해서는 [노랑+초록]이 2번 칸에 있어야 하며, 3번 기둥은 비어있어야 합니다. [노랑+초록]원판을 hanoi(n-1)이라고 표현하겠습니다. [노랑+초록]을 2번 기둥으로 옮기는 방법 [노랑+초록]을 2번으로 옮기기 위해서 위의 과정을 거쳐야 합니다. 1 -> 3..

Tistory

프로그래머스 - 신고 결과 받기 java :: 2022 KAKAO BLIND RECRUITMENT

92334 https://school.programmers.co.kr/learn/courses/30/lessons/92334?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 저는 신고자의 기준이 아닌 신고 당하는 사람을 기준으로 코드를 작성했습니다. 결과는 신고자의 index의 값을 구해야 합니다. 신고자는 같은 유저를 2번 이상 신고해도 1번으로만 처리됩니다. (중복 신고가 불가능합니다.) 중복이 불가능하다는 뜻은 Set이 활용되기 가장 좋은 문제라는 뜻이기도 합니다. 풀이1 public int[] solution(St..

Tistory

프로그래머스 - 로또의 최고 순위와 최저 순위 java :: 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

77484 https://school.programmers.co.kr/learn/courses/30/lessons/77484?language=java#fn1 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 로또의 수는 45개이고, 각 배열(lottos, win_nums)의 길이는 6개로 고정입니다. 알아야 할 것은 "몇 개를 맞췄느냐?", "몇 개가 낙서되었느냐?" 입니다. 위 두 개의 핵심으로 생각해보면 많이 맞춘 경우는 낙서된 수가 모두 당첨 번호라고 가정하고 [맞춘 개수 + 낙서된 수] 많이 맞추지 못한 경우는 낙서된 수가 모두 꽝이라고 가정..

Tistory

프로그래머스 코딩테스트 연습 Level 1 클리어 후기 (모든 문제 코드)

프로그래머스 코딩 테스트 풀이 코드 gogoma-code/programmers-codding-test (github.com) 현재는 Level1 JAVA 코드만 업로드 되어 있지만 더 높은 레벨, 다양한 언어를 추가할 예정입니다. 이제 Level 1에는 안 푼 문제는 없어요. 대부분 5분 내에는 풀었고, 조금 더 걸리는 문제들도 있었지만 심심할 때 하나씩 풀기 좋았어요. 처음에 알고리즘을 풀기 시작한 것은 java를 까먹지 않으려고 시작했어요. 최근에 java를 사용하지 않으면서 이대로 두면 언어도 많이 까먹을 것 같고, 또 최신 문법의 활용도 못 따라갈 것 같아서, 알고리즘 풀면서 언어에도 익숙해지려고 시작했어요. 실제로 내가 푼 코드와 다른 사람들의 코드를 비교하면서 문법의 활용성, 문제 해결의 접근..

Tistory

Node.js + express-session 연동 예제 :: 프로젝트 생성부터 로그인 구현하기

Window 10 환경에서 node.js를 사용했습니다. npm init 부터 로그인 UI까지 만드는 과정을 기록합니다. 편의상 node로 프론트화면까지 구성합니다. 기본적으로 node는 설치가 되어 있다고 생각하고 진행합니다. 1. express-generator로 프로젝트 생성 원하는 경로에 새로운 디렉터리를 만들어요. 저는 node-express-auth 라는 이름으로 디렉터리를 하나 만들었요. 이제 경로 내에 들어가 express-generator로 node 기본 구조를 만들 거예요. express로 프로젝트 생성 $ express ex-auth -e --git 의존 패키지 설치 $ cd ex-auth $ npm install $ npm install bootstrap --save $ npm in..

Tistory

프로그래머스 - 신규 아이디 추천 java :: 2021 KAKAO BLIND RECRUITMENT :: 72410

문제 링크 코딩테스트 연습 - 신규 아이디 추천 | 프로그래머스 스쿨 (programmers.co.kr) 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한..

Tistory

프로그래머스 - 키패드 누르기 java :: 2020 카카오 인턴십

67256번 코딩테스트 연습 - 키패드 누르기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 키패드의 위치 중 left, mid, right를 기준으로 행의 위치를 알고 있으면 답을 구하기 쉬워요. 예를 들어 키패드를 그대로 행의 인덱스 값을 부여하면 아래와 같습니다. 0 0 0 1 1 1 2 2 2 3 3 3 거리 계산이 핵심인데, 거리 계산을 하기 위해서는 손가락의 위치를 먼저 알아야 해요. 그래서 3개의 핵심이 있는 것 같아요. 누르려는 엄지의 방향 (L / R) 누르려는 키의 위..

Tistory

프로그래머스 - 숫자 문자열과 영단어 java :: 2021 카카오 채용연계형 인턴십

81301번 코딩테스트 연습 - 숫자 문자열과 영단어 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 각 숫자에 매칭되는 알파벳이 있다. 영단어의 위치는 랜덤이며 2번이상 연속으로 영단어가 나올 수도 있다. 풀이1 public int solution(String s) { List alphabet = Arrays.asList( "zero","one","two","three","four","five","six","seven","eight","nine"); StringBuilder answer ..

Tistory

Node.js :: express-generator 로 개발환경 세팅

1. express-generator란? 이제는 거의 정형화 되어 있는 프로젝트의 구성을 자동으로 생성해주고, 이 구성을 잡아줄 때 필요한 패키지를 package.json을 통해 제공하기 때문에 빠르게 노드 프로젝트 구성을 할 수 있습니다. 2. express-generator 전역에 설치하기 window라면 powershell을, linux 환경이면 터미널을 열어주세요. $ npm i -g express-generator expree-generator 패키지를 전역에 설치합니다. 전역에 설치하는 이유는 보통 단일 프로젝트에만 쓰는 게 아니라 각종 프로젝트를 만들 때 사용하기 때문입니다. 3. express로 프로젝트 생성하기 $ cd C:\expert\node-express-generator 우선 프로..

Tistory

프로그래머스 - 음양 더하기 java :: 월간 코드 챌린지 시즌2

76501번 https://school.programmers.co.kr/learn/courses/30/lessons/76501?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 풀이1 public int solution(int[] absolutes, boolean[] signs) { int answer = 0; for(int i=0; i

Tistory

프로그래머스 - 없는 숫자 더하기 java :: 월간 코드 챌린지 시즌3

86051번 https://school.programmers.co.kr/learn/courses/30/lessons/86051?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 numbers의 요소는 중복되지 않는다. numbers에 1~9까지 모든 요소가 있다고 가정할 때 그 요소의 합은 45이다. 이 두 가지 핵심을 이용하면 쉽게 풀 수 있습니다. 풀이1 public int solution2(int[] numbers) { int answer = 45; for(int num : numbers) { answer -= num..

Tistory

프로그래머스 - 크레인 인형뽑기 게임 java :: 2019 카카오 개발자 겨울 인턴십 :: 64061

문제 링크 코딩테스트 연습 - 크레인 인형뽑기 게임 | 프로그래머스 스쿨 (programmers.co.kr) 문제 이해하기 2차원배열 board의 값이 0이면 해당 자리는 공백으로 봐야 합니다. 각 인형의 고유의 숫자로 표현되며, 인형을 뽑았으면 해당 인덱스의 값을 0으로 바꿔 공백으로 표현해야 합니다. 특정 공간에 넣었다 뺐다를 반복할 때 가장 좋은 방법은 Stack이라고 생각합니다. 문제 풀이 코드-1 public int solution(int[][] board, int[] moves) { int answer = 0, doll = 0; Stack stack = new Stack(); for(int move : moves) { move--; for(int i=0; i 0) { board[i][move]..

Tistory

프로그래머스 - K번째수 java :: 정렬

42748번 코딩테스트 연습 - K번째수 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 주의할 점 i, j, k 모두 인덱스보다 1이 크다. i와 j로 새로 만든 배열을 정렬 후 k번째 수를 구해야 한다. 풀이1 public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int m = 0; m

Tistory

프로그래머스 - 완주하지 못한 선수 java :: 해시 :: 42576

문제 링크 코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 스쿨 (programmers.co.kr) 문제 풀이 주의할 점 동명이인이 있을 수 있기 때문에 remove 같은 메소드로는 정답을 구할 수 없습니다. 1번 풀이 public String solution(String[] participant, String[] completion) { String answer = new String(); HashMap map = new HashMap(); for(String runner : participant) map.put(runner, map.getOrDefault(runner, 0) + 1); for(String runner : completion) map.put(runner, map.get(runne..

Tistory

프로그래머스 - 내적 java :: 월간 코드 챌린지 시즌1

70128번 https://school.programmers.co.kr/learn/courses/30/lessons/70128?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 그냥 각 인덱스를 곱한 후 더하는 문제라 별도 설명은 안하고 stream 풀이와 정석 풀이를 남기고 끝내겠습니다. 풀이1 public int solution2(int[] a, int[] b) { return IntStream.range(0, a.length).map(i -> a[i] * b[i]).sum(); } ️ 테스트 케이스 처리속도: 평균 3.5..

Tistory

프로그래머스 - 소수 만들기 java :: Summer/Winter Coding(~2018) :: 12977

문제 링크 코딩테스트 연습 - 소수 만들기 | 프로그래머스 스쿨 (programmers.co.kr) 문제 풀이 코드-1 class Solution { public int solution(int[] nums) { int cnt = 0; for(int i=0; i

Tistory

프로그래머스 - 실패율 java :: 2019 KAKAO BLIND RECRUITMENT :: 42889

문제 링크 코딩테스트 연습 - 실패율 | 프로그래머스 (programmers.co.kr) 문제 풀이 코드 1 public int[] solution(int N, int[] stages) { List stagesList = new ArrayList(); List failureList = new ArrayList(); List answerList = new ArrayList(); for(int stage : stages) stagesList.add(stage); for(int i=1; i

Tistory

프로그래머스 - 모의고사 java :: 완전탐색

42840번 코딩테스트 연습 - 모의고사 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 뭔가 공식이 있는 문제는 아니고, 코드를 얼마나 효율적으로 짜는지가 중요한 문제 같습니다. 풀이1 public int[] solution(int[] answers) { // 수포자 패턴 int[][] supoja_pattern = { { 1, 2, 3, 4, 5 }, { 2, 1, 2, 3, 2, 4, 2, 5 }, { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 } }; // 정답수 구하기 List..

Tistory

프로그래머스 - 체육복 java :: 탐욕법(Greedy) :: 42862

문제 링크 코딩테스트 연습 - 체육복 | 프로그래머스 스쿨 (programmers.co.kr) 문제 풀이 보통 이런 문제들을 보면 정답의 기준에서 찾는 것보다 정답이 아닌 것을 기준으로 보고 푸는 게 효율이 좋더라구요. 모두가 체육복을 가지고 있다고 가정하고, 없는 사람을 제거하는 방식으로 풀었습니다. public int solution(int n, int[] lost, int[] reserve) { int[] haves = new int[n+2]; // 0번째 인덱스와, 마지막 인덱스는 비워두는 용도 int answer = n; for(int l : lost) haves[l]--; for(int r : reserve) haves[r]++; for(int i=1; i 0) { haves[i]++; hav..

Tistory

프로그래머스 - 예산 java :: Summer/Winter Coding(~2018) :: 12982

문제 링크 코딩테스트 연습 - 예산 | 프로그래머스 (programmers.co.kr) 문제 풀이 최대한 많은 부서에 지원을 해줄 수 있는 '수'를 구하는 문제입니다. d를 정렬 후 순서대로 탐색하며 budget을 초과하지 않을 만큼의 수만 구하면 됩니다. 1번 풀이 public int solution(int[] d, int budget) { Arrays.sort(d); int count = 0; for(int num : d) { budget -= num; if(budget < 0) break; count++; } return count; } 입력 배열 d를 정렬 후 순서대로 탐색합니다. 순서대로 탐색하며 해당 금액을 budget에서 빼줍니다. 만약 뺐는데 budget이 0보다 작아지면 예..

Tistory

프로그래머스 - 3진법 뒤집기 java :: 월간 코드 챌린지 시즌1 :: 68935

문제 링크 코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 (programmers.co.kr) 문제 이해하기 문제의 핵심은 3진법을 구하는 겁니다. 3진법 구하는 방법은 n을 3으로 나누어 떨어지는 수를 순서대로 나열하고 그 때마다 n을 3으로 나누면 됩니다. 이 과정을 n이 0이 될 때까지 반복하면 됩니다. 1 n = 45 45 % 3 = 0 45 / 3 = 15 2 n = 15 15 % 3 = 0 15 / 3 = 5 3 n = 5 5 % 3 = 2 5 / 3 = 1 4 n = 1 1 % 3 = 1 1 / 3 = 0 이렇게 구한 나머지 값들을 아래부터 순서대로 나열하면 3진법이 됩니다. (1200) 단, 우리는 3진법을 뒤집어야 하니 아래부터 순서대로 나열하지 말고 위에서부터 순서대로 나열하면 됩니다..

Tistory

프로그래머스 - 약수의 개수와 덧셈 java :: 월간 코드 챌린지 시즌2 :: 77884

문제 링크 코딩테스트 연습 - 약수의 개수와 덧셈 | 프로그래머스 (programmers.co.kr) 문제 풀이 1번 풀이 public int solution(int left, int right) { int answer = 0; for( int cur=left; cur

Tistory

프로그래머스 - 폰켓몬 java :: 찾아라 프로그래밍 마에스터

1845번 코딩테스트 연습 - 폰켓몬 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 풀이 문제의 설명은 긴데 핵심은 하나입니다. 중복되지 않은 수를 구하되 (nums / 2) 이하여야 한다는 것입니다. 풀이1 public int solution(int[] nums) { return Math.min(nums.length / 2, IntStream.of(nums).boxed().collect(Collectors.toSet()).size()); } IntSt..

Tistory

프로그래머스 - 나머지가 1이 되는 수 찾기 java :: 월간 코드 챌린지 시즌3

87389번 https://programmers.co.kr/learn/courses/30/lessons/87389?language=java 코딩테스트 연습 - 나머지가 1이 되는 수 찾기 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 입 programmers.co.kr 풀이 풀이1 public int solution(int n) { int answer = 0; for(int i=2; i n % i == 1).min().getAsInt(); } 너무 쉬운 문제라 이렇게만 끝내면 아쉬워서 Stream으로도 하나 풀어봤어요. 아무래도 2~n까지 전부..

Tistory

프로그래머스 - 2016년 java

12901번 https://programmers.co.kr/learn/courses/30/lessons/12901?language=java 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까 programmers.co.kr 풀이 ️ 윤년이란 2월이 29일까지 있는 날입니다. 풀이1 public String solution2(int a, int b) { String[] days = { "THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED" }; int[] numberOfDay..

Tistory

MacBook M1 우측 command 한영키로 바꾸기 (프로그램 미설치)

userkeymapping.plist 설정 아래 명령어 전부 복사해서 터미널에 그대로 붙여넣어 실행시키면 자동으로 키매핑이 준비됩니다. mkdir -p /Users/Shared/bin printf '%s\n' '#!/bin/sh' \ 'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000e7,"HIDKeyboardModifierMappingDst":0x70000006d},{"HIDKeyboardModifierMappingSrc": 0x7000000E6,"HIDKeyboardModifierMappingDst": 0xFF00000003}]}&#3..

Tistory

프로그래머스 - 두 개 뽑아서 더하기 java :: 월간 코드 챌린지 시즌1 :: 68644

문제 링크 코딩테스트 연습 - 두 개 뽑아서 더하기 | 프로그래머스 (programmers.co.kr) 문제 이해하기 배열 numbers에 있는 수의 1vs1 덧셈조합을 찾는 문제입니다. 단, 중복이 없어야 하고 오름차순 정렬이 되어야 한다는 게 포인트네요. 중복이 없어야 하니 Set을 사용하면 쉽게 풀 수 있을 거라 생각했고 그 중에서도 TreeSet을 이용하면 정렬까지 되니까 자바로는 아주 쉬운 문제였네요. 문제 풀이 코드 1 public int[] solution(int[] numbers) { Set set = new TreeSet(); for(int i=0; i

Tistory

프로그래머스 - 나누어 떨어지는 숫자 배열 java

12910번 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 풀이 나누어 떨어지는 나누어서 나머지가 0이 나오는 요소만 찾기! 주의할 점은 배열은 나누어 떨어지는 요소가 없으면 배열에 { -1 } 을 담아 리턴해야 한다는 점입니다. 그리고 이 나누어 떨어진 값들도 정렬을 해야 합니다. 풀이1 public int[] solution(int[..

1 2