알고리즘 105

[프로그래머스]할인 행사 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level2 문제 1. 자료구조를 잘 정해서 풀어야 할 것 같음 2. 로직을 반복할 때 다시 자료구조를 잘 초기화 시켜줘야 함 나같은 경우에는 Map을 사용해서 풀었음 그리고 .clone() 함수를 사용해서 초기화 시켜줬음 자세한건 주석으로 ! 코드 // 코딩테스트 연습 - 연습문제 - 할인 행사 // https://school.programmers.co.kr/learn/courses..

[프로그래머스]전력망을 둘로 나누기 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level2 문제임 그래프 문제를 잘 해결하지 못하는 편이라 겁먹고 시작했지만 풀었다 그래도 ㅎㅎㅎ 내 생각에 포인트는 1. 그래프를 어떤 자료구조로 표현할 것인가 2. 전력망이 끊긴 것을 어떻게 표현할 것인가 3. 전력망을 끊은 후 각각의 전력망에서의 송전탑의 개수를 어떻게 셀 것인가 인 것 같다 1번의 경우, 처음엔 ArrayList 구조로 했는데 get(), indexOf(), r..

[프로그래머스][1차]캐시 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 걍 보자마자 큐가 생각나서 한 10분 컷일 줄 알았는데 풀어보니까 의외로 생각할게 하나둘씩 더 있었음 ㅎㅎㅎㅎ 캐시에 있는 도시를 검색하면 그 캐시에 검색된 도시명이 제일 최근으로 올라와야됨! 그러려면 중간에 있는 도시를 삭제하고 다시 새로 추가해주면 되는데, 큐를 사용하면 중간에 있는 도시를 삭제하지 못하기 때문에 ArrayList를 사용했음 캐시의 크기가 0인 경우는 따로 예외로 두..

[프로그래머스]이진 변환 반복하기 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 쉬운 문제임 근데 보니까 전에도 풀었더라고 ㅎㅎ 문제 잘 읽고 그대로 풀면 됨 다 풀고 전에 풀었던 코드 보니까 s = s.replace("0", ""); 이렇게 문자열 함수 사용했던데 이렇게 하는게 시간도 더 빠르고 코드 길이도 짧을 듯함 ! 자세한건 주석으로 ! 코드 // 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 이진 변환 반복하기 // https://programmers.c..

[프로그래머스]N개의 최소공배수 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 쉬운 문제임 다른 사람보니까 유클리드 호제법으로도 풀었던데 나는 다른 방법으로 풀었음 ! 배열을 정렬해서 가장 큰 수를 뽑아준 다음에 걔를 기준으로 배열을 돌면서 모두의 최소공배수가 맞는지 확인했음! 그리고 그 뽑아준 애를 1배, 2배, 3배, ... 하면서 모두의 최소공배수를 구할 때까지 숫자를 증가시켜줌 자세한건 주석으로 ! 코드 // 코딩테스트 연습 - 연습문제 - N개의 최소공배..

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

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 엄청 쉬운 문제인 줄 알았는데 처음에 런타임에러로 틀렸음 ㅠㅠㅠ private static class Solution { private String solution(String s) { StringBuilder sb = new StringBuilder(); String[] strArr = s.split(" "); for (int i = 0 ; i < strArr.length ; i++)..

[프로그래머스]최댓값과 최솟값 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 쉬운 문제인데 왜 Level 2??? 문자열 s를 정수형 배열에 저장하는 방법만 알면 아주 쉬울 듯??? 코드 // 코딩테스트 연습 - 연습문제 - 최댓값과 최솟값 // https://school.programmers.co.kr/learn/courses/30/lessons/12939 package PROGRAMMERS.level2; import java.util.Arrays; publi..

[프로그래머스]단어 변환 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 3 문제치고 흔한 dfs 문제라고 생각이 들었음 알파벳이 바뀌는 횟수를 세는 부분이 포인트인 것 같음 ! 자세한건 주석으로 ! 코드 // 코딩테스트 연습 - 깊이/너비 우선 탐색(DFS/BFS) - 단어 변환 // https://school.programmers.co.kr/learn/courses/30/lessons/43163 package PROGRAMMERS.level3;..

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

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 레벨 1 문제임 Stack 활용! Stack 말고 ArrayList 써도 상관 없을듯??? 코드 // 코딩테스트 연습 - 스택/큐 - 같은 숫자는 싫어 // https://programmers.co.kr/learn/courses/30/lessons/12906 package PROGRAMMERS.level1; import java.util.Arrays; import java.util.St..

[프로그래머스]최소직사각형 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 레벨 1 문제임 애초에 처음부터 긴쪽을 가로, 짧은쪽을 세로로 생각하고 풀면 됨 ! 코드 // 코딩테스트 연습 - 완전탐색 - 최소직사각형 // https://school.programmers.co.kr/learn/courses/30/lessons/86491 package PROGRAMMERS.level1; public class Num86491_최소직사각형 { private stati..

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

문제 https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 레벨 1이라 그런지 어렵지 않은 문제였음 문제를 오랜만에 풀어서 무슨 함수가 있고 하는걸 까먹었음.... ㅎ 그래서 Character 형 ArrayList에다가 'R', 'T', 'C' , ... 얘네들을 다 추가해서 .indexOf() 함수를 사용했는데 그럴 필요없이 그냥 "RTCFJMAN" 문자열에다가 .indexOf() 함수써도 되는거였음 암튼 그렇게 풀고 풀이를 더 찾아봤는데 ..

[프로그래머스]게임 맵 최단거리 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 흔한 BFS 문제인 듯해서 BFS로 풀었음 취향에 따라 큐에 위치를 저장한 배열을 넣느냐, 아니면 클래스를 넣느냐 정해서 풀면 될 듯 함! 시작점에서 도착점까지 여러가지 길이 있을 수 있겠지만, 가장 최단 거리를 반환해야 함! 근데 BFS로 풀었기 때문에 어차피 가장 빨리 도착하는 길이 가장 최단 거리임! 클래스 사용 풀이와 배열 사용 풀이 둘 다 있음 자세한건 주석으로 ! 코드 클래스 ..

[프로그래머스]방문 길이 - Java (3차원 배열, 방향 벡터 사용 풀이)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 앞에 올렸던 글과 같은 문제지만 다른 풀이임 이 방법이 더 빠르고 효율이 좋아서 이 풀이도 올리게 됐음 ㅎㅎㅎ visited 배열을 2차원이 아닌 2차원 + 4방향. 즉, 3차원 배열로 만들어서 방문 체크를 해주는 방법임 방향 벡터 dr[]과 dc[]의 방향을 정할 때 시계 방향이나 반시계 방향으로 정해줘야 방향을 정반대로 바꿀 때 이렇게 밑에 처럼 해줄 수 있기 때문에 편함 d = (..

[프로그래머스]방문 길이 - Java (Set 사용 풀이)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 10X10의 좌표평면 위에서 게임이 진행되므로 게임 캐릭터가 [11][11] 크기의 배열 위에서 움직인다고 생각하고 문제를 풀었음 처음에는 방문한 좌표를 Set에 넣어서 중복을 제거해준 후 마지막에 Set의 크기를 답으로 정했는데, 지나간 길과 방문한 좌표 위치는 다를 수 밖에 없어서 예제 1번이 답이 다르게 나왔음 ! 그래서 Set에 "처음 위치 + 이동한 위치"를 넣었으나 테케 8번..

[프로그래머스]소수 찾기 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 완전 탐색 문제임. 나는 dfs로 풀었음 dfs 들어가기 전에 visited[] 배열 체크해주고 나오면 해제해주기 ! 문자열도 dfs 들어가기 전에 추가 해주고 나오면 빼주기 ! 나 같은 경우에는 011과 11이 같은 숫자라 중복을 없애주기 위해서 HashSet을 이용하였음 ! 자세한건 주석으로 ! 코드 // 코딩테스트 연습 - 완전탐색 - 소수 찾기 // https://school.p..

[프로그래머스]쿼드압축 후 개수 세기 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 분할 정복의 아주 대표적인 문제임! 백준에도 엄청 비슷하거나 완전 똑같은 문제가 있었던 걸로 기억하는데 맞을걸??? 암튼 지금 범위의 배열을 압축할 수 있는지 없는지 판단하는 check() 함수 - x좌표, y좌표, 현재 단계의 배열 length를 이용해서 검사 check()를 통과했으면 압축할 수 있다는 뜻이므로 return, 그렇지 않으면 4분할해서 다시 재귀로 검사!(마찬가지로 x..

[프로그래머스]방금 그 곡 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 String.replace() 메서드 사용 - A#과 A, C#과 C 등을 구별하기 위해 A#을 다른 문자열로 교체해야 함! 음악 재생 시간(분) 계산 자세한건 주석으로 ! 코드 // 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - 방금그곡 // https://programmers.co.kr/learn/courses/30/lessons/17683 package..

[프로그래머스]H-Index - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음엔 주어진 배열을 오름차순으로 정렬을 한 후에 이중 for문을 돌면서 h보다 높으면 count를 하나씩 해주는 방식으로 풀었는데, 그렇게 하면 정렬을 할 필요도 없이 그냥 완전 탐색을 하는 느낌?? 그래서 틀렸음 처음엔 근데 정렬을 제대로 이용한 풀이는 반복문을 한번만 돌면서 h-index를 뽑아낼 수가 있었음 정렬을 한 후에 h를 1씩 감소시키면서 배열의 값과 비교해나가면 h보다 ..

[프로그래머스]짝지어 제거하기 - Java

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 반복문 안에서 문자 하나하나 앞뒤를 비교해가면서 문제를 풀 수도 있지만 자료구조를 잘 활용하면 반복문으로 한번 더 안감싸고 더 쉽게 풀 수 있음 !!! 여기서 말한 자료구조는 Stack임 ! Stack을 이용하면 반복문을 여러번 돌 필요가 없이, Stack에 데이터를 넣을 때마다 비교를 통해서 문자열을 짝지어서 제거할지 안할지 정할 수 있음 코드를 보면 무슨 말인지 알 수 있을거임 ! ..

[프로그래머스]위장 - Java

문제 https://programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 어디서 풀어본 문제 같다 싶었는데,,, https://seokmimmmmmmmm.tistory.com/138 [백준]9375번 패션왕 신해빈 - Java 문제 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat..