Seren dev's blog
article thumbnail
[프로그래머스] Lv.2 : 스킬트리 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 skill_trees에 저장된 각 스킬 트리가 가능한 스킬트리인지 검사한 후 가능한 스킬트리의 개수를 출력해야 한다. 스킬트리가 가능한 스킬트리인지는 skill에 저장되어있는 스킬들의 순서를 통해 알 수 있다. 이를 위해 skill에 저장되어있는 스킬들의 순서를 통해 Map 타입 변수 skillMap을 선언해 (스킬 이름, 스킬 순서)를 저장한다. 이후 skill_trees에 저장된 각 스킬..

article thumbnail
[프로그래머스] Lv.2 : 영어 끝말잇기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12981?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 영어 끝말잇기가 끝나는 사람의 번호와 차례를 구해야 한다. 영어 끝말잇기가 끝나는 경우는 2가지다. 이전에 등장했던 단어를 사용할 때 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말하지 않은 경우 영어 끝말잇기가 끝나는지 검사하는 메서드를 사용해 영어 끝말잇기가 끝나는 경우 그 사람의 번호와 차례를 구한다. 이전에 등장했던 단어를 저장하기 위해 Set 형 변수..

article thumbnail
[프로그래머스] Lv.2 : N개의 최소공배수 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 앞에서부터 두 수의 최소공배수를 구하고, 구한 최소공배수와 배열의 다음 수의 최소공배수를 또 구하고, 이런 과정을 반복해서 최종적으로 모든 수의 최소공배수를 구하면 된다. 로직 1. a, b, gcd, lcm 변수를 선언한다. 2. a와 lcm은 arr[0]으로 초기화한다. arr은 길이가 1이상인 배열이기 때문에 첫번째 원소가 바로 정답이 될 수 있기 때문이다. 3. for문에서 다음과 같..

article thumbnail
[프로그래머스] Lv.2 : 게임 맵 최단거리 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 캐릭터가 상대 팀 진영에 도착하기 위해서 지나가야 하는 칸의 개수의 최솟값을 구해야 하므로 BFS를 사용한다. BFS 시작 위치는 캐릭터의 시작 위치와 같다. maps는 0과 1로만 이루어져 있으며 0은 벽이 있는 자리, 1은 벽이 없는 자리를 나타낸다. 캐릭터의 방문 여부를 나타내기 위해, 캐릭터가 방문한 칸은 maps에서 2 이상의 값으로 나타낸다. 즉, maps[x][y]는 (x, y)좌..

article thumbnail
[프로그래머스] Lv.1 : 모의고사 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 시험 문제의 정답이 주어졌을 때, 1번, 2번, 3번 수포자의 점수를 구한 다음 높은 점수를 받은 수포자의 번호를 구해야 하며, 여러 명인 경우 오름차순으로 정렬하여 출력해야 한다. 1번, 2번, 3번 수포자의 점수를 구하는 로직은 따로 함수를 작성하여 구현하고, 구한 점수를 score 배열에 저장한다. 점수의 최댓값을 구한 후 그 최댓값을 가진 번호를 ArrayList에 저장한 다음 이 A..

article thumbnail
[프로그래머스] Lv.1 : 두 개 뽑아서 더하기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/68644 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 numbers의 길이는 2 이상 100 이하이므로 이중 for문을 사용하여 두 개의 수를 더한 수를 ArrayList에 추가한다. Set이 아닌 ArrayList에 추가하는 이유는 이후 오름차순으로 배열에 저장해야 하기 때문에 Collections.sort() 메서드를 사용하기 위함이다. 로직 1. List list를 선언한다. 2. 이중 for문을 사용하여 두 개의 수를 뽑는다. 3. 뽑은..

article thumbnail
[프로그래머스] Lv.2 : [1차] 캐시 - 자바[Java]

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 캐시 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다. 어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도..

article thumbnail
[프로그래머스] Lv.1 : [1차] 다트 게임 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 다트 게임 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻..

article thumbnail
[프로그래머스] Lv.1 : [1차] 비밀지도 - 자바[Java]

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하..

article thumbnail
[프로그래머스] Lv.1 : 소수 만들기 - 자바[Java]

Summer/Winter Coding(~2018) https://school.programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 nums에 있는 숫자들 중 서로 다른 3개를 골라야 하며, 더했을 때 소수가 되는지 판별해야 한다. 서로 다른 3개를 고르는 방법은 DFS를 사용하여 조합을 통해 구한다. 그리고 조합으로 구한 수를 모두 더해서 소수가 되는지 함수를 호출해 판별한다. 로직 1. 전역 변수로 조합의 수를 저장하는 comb 배열을 선언하고, 정답을 저장하는 ans..

[프로그래머스] Lv.1 : 3진법 뒤집기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/68935 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 풀이 숫자(10진법) -> 3진법으로 변환 -> 앞 뒤 반전 -> 3진법을 10진법으로 변환 10진법을 3진법으로 변환할 때는 StringBuilder형 변수 sb를 사용하여 n를 3으로 나눈 나머지를 sb에 추가한다. ..

[프로그래머스] Lv.1 : 약수의 개수와 덧셈 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/77884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 풀이 약수의 개수가 홀수인 수는 제곱수이다. left부터 right까지 for문을 사용해서 각 수가 제곱수인지 판별한다. 로직 1. answer을 0으로 초..