반응형

Category 169

[프로그래머스] 2018 KAKAO BLIND RECRUITMENT 비밀지도 JAVA

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 `n`인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 지도 1과 지도 2는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 `1`..

알고리즘 연습 2020.03.22

[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 실패율 JAVA

Q. 실패율 출처 : https://programmers.co.kr/learn/courses/30/lessons/42889 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전..

알고리즘 연습 2020.03.21

[프로그래머스] 2018 KAKAO BLIND RECRUITMENT 1차 다트 게임

Q. 다트게임 출처 : https://programmers.co.kr/learn/courses/30/lessons/17682 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single(`S`), Double(`D`), Triple(`T`) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1 , 점수..

알고리즘 연습 2020.03.16

[ Git ] 소스트리로 Git 연동하기/ 간단 사용법

다운로드 받은 소스트리를 이용하여 프로젝트를 Git과 연동해보겠습니다. 저장소 > 저장소 설정 > 추가 버튼을 눌러주세요 Git Repository URL을 입력하고 원하시는 사용자명을 입력해주세요 그렇다면 이제 Commit을 진행해보겠습니다. Git 명령어를 사용하던 것에 비해 확실히 간편하다는 것을 느끼실 수 있으실겁니다. 정상적으로 Git Repository Clone이 되었다면 아래쪽에 파일 목록들이 보일겁니다. 커밋을 진행하기 위해 모두 스테이지에 올리기 버튼을 클릭해주세요 바뀐 내용 즉시 푸시를 체크해주시고 커밋을 진행하시면 정상적으로 커밋과 푸시가 완료된 모습을 보실 수 있습니다. - 끝 - # 한 번씩 소스트리가 먹통이 되는 경우가 있습니다. 이럴 때 소스트리를 그냥 삭제하고 재설치를 해도..

카테고리 없음 2020.02.24

[ Git ] windows 소스트리(Sourcetree) 설치하기

최근 IntelliJ 설치와 Spring을 활용한 web을 공부하면서 소스트리(Sourcetree)에 대해 알게 되었습니다. 소스트리를 사용하는 이유는 기존 명령어 기반의 Git 사용이 익숙하지 않은 ( 저처럼 불편해하는 ) 사람들에게 명령어 없이 Git 작업을 가능하게 해주는 프로그램입니다. 앞으로 개발에 접하는 많은 사람들이 사용해볼만한 프로그램이어서 설치 방법과 간단한 설정 방법을 적어둘까 합니다. https://www.sourcetreeapp.com/ ← 소스트리 사이트입니다. 다운로드를 위해 이동해주세요 사이트에서 Download for Windows 버튼을 클릭하면 바로 다운로드가 시작됩니다. 다운로드가 진행되는 동안 Git에 새 Repository를 하나 만들어주겠습니다. ( Sourcetr..

IT 2020.02.23

[SWEA] 2105. [모의 SW 역량테스트] 디저트 카페 JAVA 문제풀이

풀이 쉽게 생각했지만 생각보다 시간을 많이 들인 문제입니다. 저는 이 문제를 풀이할 때 DFS를 이용하여 풀이하였습니다. 6개의 매개변수 (i, j(현재위치), si와 sj(시작점), 0(방향 0), 1(길이 1))를 이용하였습니다. 항상 직사각형 모양으로 디저트 카페 투어가 이루어지므로 저는 가장 위쪽 모서리를 중심으로 잡고 오른쪽 아래↘ (dir==0), 왼쪽 아래↙ (dir==1), 왼쪽 위↖(dir==2), 오른쪽 위↗(dir==3) 이렇게 기준점에서 시작하여 ↘ ↙ ↖ ↗순서대로 순회한다면 원위치로 돌아올 수 있기 때문입니다. 이를 이용하여 DFS를 순회하게 되는데, 해당 위치의 디저트 번호를 방문했는지 확인하는 disert()배열과 함께 이동하였습니다. 먼저 방향이 0일때, 오른쪽 아래(↘)로..

알고리즘 연습 2020.02.06

[ SWEA ] 1953. [모의 SW 역량테스트] 탈주범 검거 JAVA 문제풀이

풀이 표의 그림은 복잡해 보이지만 생각보다 간단한 BFS 문제입니다. 맵의 상태를 입력으로 받아준 뒤, 시작지점의 좌표 ( start_i, start_j, time - 1 )에서 탐색을 시작합니다. 이때 맵의 정보 (cap)을 이용하여 cap이 1 ~ 7 각각의 경우에 대해 모두 처리해주었습니다. 여기에서 주의할 점으로는, 현재 위치에서 다음 지점으로 연결되어 있다고 할지라도, 다음 지점에서도 현재 지점으로 파이프가 연결되어 있어야 이동 가능하다는 점입니다. 이 점에 주의한다면 코드는 길지만 어렵지 않게 풀이할 수 있는 문제입니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; i..

알고리즘 연습 2020.02.03

[ SWEA ] 1949. [모의 SW 역량테스트] 등산로 조성 JAVA 문제풀이

풀이 이 문제는 DFS를 이용하여 풀이하였습니다. 1. 입력을 받을 때 봉우리의 높이를 알아야 하므로 max 변수를 이용하여 봉우리의 위치를 찾아주었습니다. 2. 문제에서 등산로는 가장 높은 봉우리에서 시작한다고 하였으므로 ArrayList를 이용하여 시작점이 될 수 있는 봉우리의 위치를 start 리스트에 저장해주었습니다. 3. start 리스트에 있는 사이즈만큼 각 봉우리의 위치에서 DFS를 실행하였습니다. 이때, 인자로는 ( i, j, 지형을 깎을 수 있는지 여부, 현재까지 등산로의 길이, 현재 높이 )로 설정해주었습니다. 4. 이후 dfs 함수에서 공사를 진행할 기회가 남아 있을 때 ( cut == 1 )와 더 이상 공사를 진행할 수 없을 때 ( cut == 0 ) 으로 나누어주었습니다. 5. D..

알고리즘 연습 2020.02.03

[프로그래머스_2018 KAKAO BLIND RECRUITMENT] 1차_뉴스 클러스터링

문제 풀이 2개의 리스트를 활용하여 풀이했던 문제입니다. 1. 먼저 str1과 str2를 모두 toUpperCase()를 사용하여 대문자로 변환해줍니다. 2. list1과 list2를 만들어주고 조건에 맞는(대문자 2자) 문자열을 각각의 list에 담아줍니다. 3. sum (전체 문자열의 갯수)과 same (서로 일치하는 문자열) 을 구해줍니다. 이 과정에서 같은 문자열이 복수적으로 체크될 수 있기 때문에 찾아낸 동일한 문자열은 list에서 삭제해주었습니다. 4. 0 ~ 1 사이의 소수점으로 일치율이 구해지므로 double형으로 일치율을 구해준 뒤 65536을 곱해주어 답을 구해주었습니다. 예외처리로 list의 사이즈가 0이 되는 경우 -> 문자열이 존재하지만 공집합이 되는 경우이므로 answer을 65..

알고리즘 연습 2020.02.02

[ Git ] Git 사용 Tips

Git은 보통 프로젝트를 진행하거나 다른 사람과 함께 개발 과정을 공유하기 위해 사용합니다. 이렇게 여러 명의 팀원과 함께 개발을 진행하다 보면 서로 같은 파일을 수정한 뒤 commit 하고, push하는 경우가 발생합니다. 문제는 이런 경우에 Git에서 "CONFLICT", 즉 merge 충돌이 발생합니다. 이를 피하기 위해서는 팀원 개개인이 자신의 변경사항을 commit 하기 전에 master에 있는 내용을 "pull" 해준 뒤 push함으로써 충돌에 대비할 수 있습니다. 그렇다면 pull 명령어는 어떻게 사용하는지 알아봅시다. 잘 설명이 되어 있는 글이 있어 해당 문서를 참고하였습니다. 팀원과 함께 프로젝트를 진행한다면 "pull" 명령을 습관화하여 충돌을 줄이는 것이 좋겠습니다! 추가적으로, 로컬..

IT 2020.01.05
반응형