본문 바로가기

전체 글108

[프로그래머스(programmers)] (월간 코드 챌린지 시즌1) 이진 변환 반복하기 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 이진 변환 반복하기 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 문제 풀이 0의 개수 = 문자열 s의 길이 - 0을 지운후 s의 길이 이 문제는 많은 걸 생각할 것도 없이 쉬운문제였다. 그냥 주어진대로 차례대로 해나가면 풀 수 있는 문제였다. 점수는 4점 받았다. public static int[] solution(String s) { int[] answer = new int[2]; while(!s.equals("1")) { answer[1] += s.length(); s = s.replaceAll("0.. 2021. 6. 4.
[프로그래머스(programmers)] (2021 Dev-Matching) 행렬 테두리 회전하기 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 행렬 테두리 회전하기 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 문제 링크 한 칸씩 이동하는 것이므로 dx, dy 배열을 만들었다. 이번 문제는 거의 2시간 정도 걸렸다. 이렇게 까지 오래 걸린지 몰랐는데 시간을 보니 훌쩍 지나있었다. 문제를 어떤식으로 풀지 생각하는건 금방 했는데 구현하는 것에서 오래걸렸다. 오.. 2021. 6. 3.
[프로그래머스(programmers)] (월간 코드 챌린지 시즌2) 괄호 회전하기 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 괄호 회전하기 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 문제 풀이 Map을 사용하여 key, value로 비교한다. 올바른 괄호 문자열 비교를 위해 Stack을 사용한다. 이번 풀이는 15점이나 줬다. 여태까지 내가 푼 문제들 중에 가장 배점이 높아서 뿌듯했다. 풀고나서 다른사람들의 풀이를 봤는데 내 코드가 조금 더 나은점이 하나 있었다. 그것은 바로 map 을 사용하여서 괄호의 짝을 미리 지정해둔것이다. (다른사람은 모두 일일히 가져와 비교했다) 어차피 나올 괄호는 () [] {} 세가지로 정해져있기 때.. 2021. 6. 2.
[프로그래머스(programmers)] (2017 팁스타운) 예상 대진표 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 예상 대진표 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12985# 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 문제 풀이 다음라운드 자신의 대진번호는 (현재라운드 + 1) / 2 이다. 처음 풀어보았을 땐, b를 무조건 큰 수로 만든 후 b-a 의 차이로 구했다.이렇게 할 경우 테스트 케이스 7번, 33번 에서 실패였다. 바로 a = 4, b = 5일 경우에.. 2021. 6. 1.
큐(Queue) 란 무엇인가? ▏큐(Queue) 큐는 스택과 반대로 FIFO(First-In-Last-Out) 즉, 선입선출 구조로 생각하면 된다. 다시 말하면, 한 쪽 끝에서 삽입이 이루어지고 반대쪽에서 삭제가 이루어지는 구조이다. 따라서 주로 데이터가 입력된 시간순대로 처리해야 할 경우에 사용된다. 큐에 값 추가 하는것을 Enqueue 라 하고, 값 삭제하는 것을 Dequeue 라 한다. ▏Queue연산 add() / offer() : 큐에 값을 추가한다. remove() : 큐에 가장 앞쪽에 있는 항목을 제거한다. poll() : 큐에 첫번째 값을 반환한 후 제거한다. (비어있다면 null) clear() : 큐에 모든 요소를 제거한다. isEmpty() : 큐가 비어있으면 True 아니면 False ▏참고자료 Queue를 활용.. 2021. 6. 1.
스택(Stack)이란 무엇인가? ▏목적 ◦ Stack 이해하기 ▏시작하는 말 스택 · 큐에 대한 개념을 알지 못하고 알고리즘 문제를 풀었던 적이 있었다. 도저히 해결법을 몰랐었는데 지인이 큐로 풀면 된다고 했었던 기억이 있다. 그 때 큐를 처음 알게 되었다. 하지만 정확한 개념을 이해하지 못한채로 넘어갔었다. 올 해 초, 정보처리산업기사 자격증을 취득하였고 그 과정에서 스택 · 큐 자료구조를 제대로 공부하게 되었다. 그래서 오늘 그 개념에 대해 설명해보려고 한다. 스택 · 큐 포스팅 모두 내가 직접 그림판에서 그린 것이라 그림들이 조금 엉성할 수 있다. ▏스택(Stack) 스택은 LIFO(Last-In-First-Out) 즉, 후입선출 구조로 생각하면 된다. 쉽게 말해서, 차곡차곡 쌓아올리는 개념으로 보면 된다. 삽입 삭제 모두 Top.. 2021. 5. 31.
Docker 명령어 Ubuntu 에서 docker 설치 할 때 $ sudo apt-get update $ sudo apt-get install docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker 현재 실행중인 도커 컨테이너 목록 볼 때 [-a]는 생성된 모든 목록 출력 $ docker ps [-a] Container $ docker run [options] image[:TAG|@DIGEST] [COMMAND] [ARG...] // 컨테이너 실행 $ docker start [컨테이너 ID] // docker 시작 $ docker restart [컨테이너 ID] // 컨테이너 재시작 $ docker attach [컨테이너 ID] // 컨테이너 접속 $ docker.. 2021. 5. 31.
도커란 무엇인가? 예전에 Airbnb 클론코딩 프로젝트를 한 적이 있다. 그 때 내가 맡은 역할 중 하나가 서버 구축후 배포 였다. 그때의 나는 Docker를 알지 못해서 Filezilla를 사용하여 프로젝트 기간 동안 수정사항등을 계속해서 배포해야 하는 번거로움이 있었다. 지금은 새롭게 주식 가계부라는 Stocking 프로젝트를 진행하고 있는데, 이번에도 인프라 구축은 내가 맡았다. 저번 프로젝트를 했을 땐 나도 서버구축이 처음인지라 많은 것을 알지 못했다. 그래서 난 FileZilla를 사용하여 매번 수동으로 서버에 업로드를 했고 그 점이 매우 번거롭고 불편했다. 그래서 프로젝트가 끝난 후 자동배포란 것이 있지 않을까 하는 마음에 이것저것 찾아보았다. 그렇게 처음 Docker 란 것을 알게 되었고, 며칠간의 구글링 끝.. 2021. 5. 29.
[프로그래머스(programmers)] (2017 팁스타운) 짝지어 제거하기 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 짝지어 제거하기 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 문제 풀이 stack 과 substring() 을 사용해서 푼다. 이 문제를 보자마자 처음 든 생각은 앞에서부터 문자를 추출해와서 다음 단어와 같으면 replace로 지워주고 다시 처음부터 반복하는 알고리즘을 떠올렸다. 그랬더니 반정도는 시간초과에 효율성은 전.. 2021. 5. 29.
[Programmers/Summer,Winter Coding(2019)] 멀쩡한 사각형 - Java 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 멀쩡한 사각형 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 문제 풀이 최대공약수를 먼저 구한다. x좌표 + y좌표 - 1 이란 공식을 생각한다. 전체 사각형에서의 직각삼각형을 보고 있자니 같은 비율의 최소 직각삼각형에서의 길이를 구한 후, 그 배수만큼 곱하면 되겠단 생각이 먼저 들었다. 쉽게 말해서 최대공.. 2021. 5. 28.
[프로그래머스(programmers)] (2019 KAKAO BLIND RECRUITMENT) 오픈채팅방 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 오픈채팅방 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42888 문제 풀이 split 을 사용하여 E / L / C , 유저아이디, 유저닉네임 이렇게 세개로 나눴다. hashmap 을 사용하여 유저아이디에 따른 마지막 설정한 유저닉네임을 넣어줬다. 처음 풀었을 땐 리스트를 배열로 옮김과 동시에 마지막 변경된 유저 닉네임을 고쳐주기 위하여 replace를 사용하여 고쳐줬었다. 그런데 25번 부터 32번까지 시간초과가 났다. 문장을 만들고 바뀐 닉네임을 다시 변경을 하는 로직이여서 오래걸린단 생각에 반대로 유저닉네임들부터 바꾸고 문장을 만들잔 생각을 했다. 그래서 replace를 사용하.. 2021. 5. 27.
[프로그래머스(programmers)] (Lv2) 124 나라의 숫자 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 124 나라의 숫자 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 문제 풀이 첫번째 시도 첫 시도에서는 문자열 str 에 숫자를 받아와 뒤집어 주게 풀었었다. 이렇게 하니 효율성에서 시간 초과가 나서 애초에 문자를 추가 할 때, 앞에 추가해주면 되는거였다. public static String solution(int n) { String answer = ""; String str = ""; while (n > 0) { int num = n % 3; n = n / 3; if(num == 0) { num = .. 2021. 5. 26.
반응형