반응형

알고리즘/프로그래머스 21

[프로그래머스]JAVA - Level1. 폰켓몬

https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 홍 박사님의 총 폰켓몬의 절반을 최대한 다양한 폰켓몬으로 선택하는 문제이다. 중복없이 선택을 해야하기 때문에 바로 HashSet이 떠올랐다. HashSet을 이용하면 중복은 자동으로 제거가 되기 때문에 문제가 매우 간단해진다. 우선 총 폰켓몬을 전부 HashSet에 넣어서 중복을 제거한다. 이후에 HashSet의 사이즈가 총 폰켓몬의 절반을 넘으면 총 폰켓몬의 절반을 answer에 넣어주고, ..

[프로그래머스]JAVA - Level1. 소수 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 배열 nums에서 임의의 숫자 3개를 선택하여 해당 수의 합이 소수가 되는 경우의 수를 구하는 문제이다. 소수란 1과 자기 자신 외의 약수를 가지지 않는 1보다 큰 자연수이다. 우선 배열에서 숫자를 가져올 때 3중 for문을 쓰는 게 생각났다. 하지만 너무 비효율적이라고 생각해서 고민해봤는데 도저히 답이 안나왔고, 구글링을 했을 때도 3중 for문을 써서 해결한 게 대부분이였다. for (i..

[프로그래머스]JAVA - Level1. 신고 결과 받기

https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해당 문제는 왜 Level 1로 되어있는지 잘 모르겠다... 문제에 중복을 제거해야하는 특징이 있기 때문에 HashMap과 HashSet을 사용하면 좋을 것 같다고 생각했다. 이후에 신고자와 대상자를 나눠서 HashSet을 대상자 기준으로 배열을 만들어 해결했다. HashSet[대상자] 배열에 신고자를 입력해주면 자동으로 중복이 제거 되므로 중복 문제를 쉽게 해결할 수 있다. for (Str..

[프로그래머스]JAVA - Level1. 최소직사각형

https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 명함을 옆으로 돌려서 넣을 수 있다는 가정이 있기 때문에 가로, 세로 값이 아닌 각 명함의 큰 값과 작은 값으로 나누는게 좋다. 1. 각 명함의 크기에 큰 값과 작은 값으로 구분한다. 2. 가로 (큰 값)을 비교하면서 가장 큰 값을 찾는다. 3. 세로 (작은 값)을 비교하면서 가장 큰 값을 찾는다. 4. 가로 (큰 값) 과 세로 (작은 값)을 곱해서 지갑의 크기를 구한다. class Solu..

[프로그래머스]JAVA - Level1. 같은 숫자는 싫어

https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이번 문제는 배열로 푸는 게 훨씬 쉽다고 생각했다. 하지만 문제가 스택/큐로 분류가 되어있으니까 스택을 이용해서 풀어보려고한다. preNum이라는 변수에 배열 arr에 들어갈 수 없는 임의의 숫자를 넣어준 후에 인접한 숫자가 같은 수가 아니면 queue에 넣어주면 끝이다. import java.util.*; public class Solution { public int[] solution(i..

[프로그래머스]JAVA - Level2. 가장 큰 수

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이번 문제도 풀이를 봤다.. 내 알고리즘 실력은 언제쯤 성장할 것인가.. 우선 int 형의 numbers 변수를 String 형태로 변환해야하는 것은 알고 있었다. 하지만 아무리 생각해도 어떤식으로 숫자를 비교하면서 정렬해야하는지 감이 잡히지 않았다. 다른 분들의 풀이를 봤더니 Comparator 클래스를 이용해서 첫 번째 인자와 두 번째 인자를 비교해서 문제를 해결했다. 1번 예제의 경우 ..

[프로그래머스]JAVA - Level2. 기능 개발

https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 세상에 중간 단계의 알고리즘은 없는 걸까? 체감상 순한맛, 매운맛밖에 없는 것 같다.. 이번 알고리즘 문제는 배열로만 해결할 수도 있고, Queue를 이용해서 해결해도 된다. 문제에서 요구하는 건 Queue로 해결하는 방법이기 때문에 Queue를 이용해서 풀어봤다. 우선 progresses 와 speeds 를 이용해서 배포가 가능한 날짜를 구해서 Queue에 넣어줘야 한다. 배포가 가능한 날..

[프로그래머스]JAVA - Level3. 코딩 테스트 공부

https://school.programmers.co.kr/learn/courses/30/lessons/118668 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 2022 Kakao tech internship 알고리즘 문제를 1번부터 차근차근 풀어보고있는데 3번부터 어렵다... 이것저것 해보다가 검색해봤더니 동적 계획법 (Dynamic Programming) 을 사용해야하는 문제이다. 동적 계획법이란 복잡한 문제를 여러 개의 작은 부분 문제로 나누어서 문제를 해결하는 기법으로 Bottom_Up 과 Top_Down 방법 두 가지가 존재한다. Top_..

[프로그래머스]JAVA - Level1. 성격 유형 검사하기

https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 선택지에 따라 8가지의 mbti에 점수를 입력해야하므로 HashMap 을 쓰면 간단하게 풀 수 있다. HashMap 의 key 값에 8가지의 mbti 유형을 넣어주고 value 값을 모두 0으로 선언한다. choice 길이 만큼 반복문을 태워서 switch 문을 이용해서 점수를 입력해주었다. 이후에 서로 상이한 mbti 끼리 점수를 비교해서 큰 값을 answer 변수에 차례대로 입력하면 된..

[프로그래머스]JAVA - Level1. 신규 아이디 추천

https://school.programmers.co.kr/learn/courses/30/lessons/72410?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 7개의 단계가 있어서 문제가 어려워 보이지만 매우 간단하다. 문제를 보자마자 정규표현식을 떠올렸고 생각나는대로 작성했다. 정규표현식을 몰라도 충분히 풀 수 있는 문제이기 때문에 전혀 어렵지 않지만 정규표현식의 사용 유무에 따라 코드 길이가 엄청 달라진다. class Solution { public String solution(String new_id) { String..

반응형