전체 글

전체 글

    [python] 프로그래머스 Lv 1 - 바탕화면 정리

    [python] 프로그래머스 Lv 1 - 바탕화면 정리

    🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 구현 💡풀이 wallpaper를 문자 단위로 순회하면서 '#' 문자를 찾을 때, 최소 x와 y 좌표 값과 최대 x와 y 좌표 값을 구하면 된다. 이 값들은 시작점과 끝점을 나타내므로 최대 x와 y 값을 찾을 때에는 각각에 1을 더해 반환한다. 💻 코드 def solution(wallpaper): ly, lx, ry, rx = 51, 51, -1, -1 for i in range(len(wallpaper)): for j in range(len(wallpaper[i])): if wallpa..

    [python] 프로그래머스 Lv1 - 공원 산책

    [python] 프로그래머스 Lv1 - 공원 산책

    🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 자료구조 완전탐색 💡풀이 start point를 찾아서 route의 방향대로 장애물이 없고, len을 벗어나지 않는다면 이동시켜 최종 이동한 좌표를 구하는 문제이다. 문제는 매우 심플했는데 코드의 길이가 너무 길어서 다른 사람의 풀이를 보았더니 for-else문과 dictionary를 이용한 풀이도 있었다. 언어는 배우기 정말 쉬우나 그 언어답게 쓰는건 어려운 것 같다. 💻 코드 # 내 풀이 def get_start_point(park): for i in range(len(park)):..

    [python] 프로그래머스 Lv1 - 추억 점수

    [python] 프로그래머스 Lv1 - 추억 점수

    🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📂 분류 구현 자료구조 💡 풀이 이 문제는 map 자료구조를 알면 쉽게 풀 수 있다. name과 yearning의 길이가 같기 떄문에 리스트를 순회하면서, 이름과 점수를 저장한다. 그리고 photo 이중 리스트를 순회하면서 dic에 있는 이름이라면 그 점수를 score에 더한다. 💻 코드 def solution(name, yearning, photo): answer = [] dic = {} # 추억 점수 저장 O(N) for i in range(len(name)): dic[name[i]] = y..

    [Python] 프로그래머스 Lv1 - 달리기 경주

    [Python] 프로그래머스 Lv1 - 달리기 경주

    🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📂 분류 구현, 자료구조 💡 풀이 제한사항을 고려하지 않고 list의 index 와 swap을 이용해서 문제를 해결했으나 시간초과가 발생했다. 시간초과 이유는 최대 1,000,000 * 50,000 = 500억 이므로 O(N^2)의 시간복잡도를 가지는 알고리즘은 사용할 수 없었다. player의 순위를 dictionary에 저장하여 swap을 사용했다. 💻 코드 def solution(players, callings): rank = {key : i for i, key in enumerate(pl..

    [IntelliJ] ideaVim 플러그인 Surround 기능

    [IntelliJ] ideaVim 플러그인 Surround 기능

    인텔리제이에서는 풍부한 편집 기능들을 제공하지만, ideaVim 플러그인을 사용하면 IDE에서 제공하는 기존 Surround 기능을 활용하지 못한다는 단점이 있습니다. 그래서 오늘은 ideaVim 플러그인에서 surroud 기능을 사용할 수 있는 방법에 대해 알아보려고 합니다. Surround 기능이란 ? surround 기능이란 텍스트를 감싸는 기능입니다. 텍스트 안에 태그나 문자열 그리고 브라켓을 추가하거나 기존에 있던 태그, 문자열, 브라켓을 변경할 수 있습니다. Surroud 사용 방법 먼저 감싸고 싶은 텍스트를 선택한 다음, 원하는 문자 또는 태그를 추가할 수 있는 단축키를 입력합니다. 가장 일반적인 단축키는 다음과 같습니다. cs: 기존의 태그를 다른 태그로 교체 (예: "hello"에서 cs..

    [zsh] 터미널에서 커서 조작

    [zsh] 터미널에서 커서 조작

    터미널에서 명령어를 지우거나 커서를 이동할 때 ⌫를 누르거나←, → 를 마구 누른 적이 있었을 것이다. 이 일은 사소하지만 매우 귀찮은 일이다. '어떻게 한 번에 하는 이동하거나 지울 수 있을까?'라고 생각하고 검색을 해보니 필자와 같은 상황이 매우 많았고, 정리가 잘 되어있었다. 필자가 다시 찾을 수 있기 때문에 커맨드를 정리하고자 한다. 커서 조작 사진 커서 조작 표 command action ⌃ + A 라인 맨 앞으로 이동 ⌃ + E 라인 맨 뒤로 이동 ESC + B 앞 단어로 이동 ESC + F 뒷 단어로 이동 ⌃ + B 앞 글자로 이동 ⌃ + F 뒷 글자로 이동 ⌃ + U 한 줄 삭제 ⌃ + W 앞 단어 삭제 ESC + D 뒷 단어 삭제

    [Github] ssh를 이용한 여러 개의 깃허브 계정 사용하기

    [Github] ssh를 이용한 여러 개의 깃허브 계정 사용하기

    프로젝트를 하다 보면 서로 다른 깃허브 계정으로 작업해야 할 때가 있다. 이때 ssh를 이용하면 CLI에서 서로 다른 계정으로 깃허브 관리를 할 수 있다. ssh key 생성 $ ssh-keygen -t rsa -C "your_email@example.com" Generating public/private rsa key pair. Enter file in which to save the key (/Users/사용자 이름/.ssh/id_rsa): id_rsa_me ~/.ssh로 이동 후 위 명령어로 ssh key를 생성한다. 메일에 개인 프로젝트라면 개인 계정 입력하고, 회사 프로젝트라면 회사 계정을 입력한다. 필자는 key 이름을 개인 프로젝트일 경우 id_rsa_me, 회사 프로젝트일 경우 id_rsa..

    [Git] username과 email 설정

    [Git] username과 email 설정

    같은 로컬 환경에서 회사 리포지토리와 개인 리포지토리를 사용할 때 username과 email 설정이 필요하다. 자주 쓰는 username, email 설정 (글로벌 설정) $ git config --global user.name {"git username"} $ git config --global user.email {git email} 위 명령어를 수행하면 로컬에 존재하는 모든 repository에 username, email이 설정된다. 단일 repository username, email 설정 $ git config user.name {"git username"} $ git config user.email {git email} 위 명령어를 수행하면 로컬에 해당 repository에만 usernam..

    [Python] 프로그래머스 Lv2 - JadenCase 문자열 만들기

    [Python] 프로그래머스 Lv2 - JadenCase 문자열 만들기

    🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📂 분류 문자열 💡 풀이 문자열을 소문자로 바꾸고, 공백을 기준으로 분리한다. ⚠️ 문제 설명을 보면 공백 문자가 연속적으로 나올 수 있다고 나와있다. 따라서 split()을 사용하면 연속된 공백을 하나로 취급하기 때문에 split(' ')을 사용해야 한다. 그리고 분리된 문자열이 비어있지 않을 때 capitalize()라는 첫 문자를 대문자로 바꾸어주는 내장 함수를 사용한다. 💻 코드 def solution(s): s = s.lower() answer = '' split = s.split(' ..