[프로그래머스/Java] PCCP 기출문제 3번 : 충돌 위험 찾기
·
알고리즘
📝 문제 이름사용 언어 : Java 🔗 https://school.programmers.co.kr/learn/courses/30/lessons/340211?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 🔎 문제 설명 ✅ 풀이진짜 진짜 오래 걸렸던 문제였다.. BFS 비스무리하게 써야한다는 것은 알겠는데, 충돌 지점을 어떻게 체크할 것이고 충돌 지점을 체크할 때 같은 지점은 1번만 카운팅해야 하는데 이 부분을 어떻게 구현할 것인지 고민을 많이 헀던 문제다..코테 문제를 풀다가 오래걸리게 되면 어느정도 다른 사람의 코드나 반례 들을 찾아보곤 하는데 이 문제는 풀릴듯 말듯 오기..
[백준/Java] #1377 버블 소트
·
알고리즘
📝 문제 이름사용 언어 : Java레벨 : 골드 2 🔗 https://www.acmicpc.net/problem/1377 🔎 문제 설명 ✅ 풀이일단 처음에 문제를 정확히 이해를 못했었는데 여러 번 읽고 보니까 버블 정렬의 swap이 한 번도 일어나지 않은 루프가 언제인지 찾는 문제였다. 그래서 그냥 버블 정렬을 사용하면 되는거 아닌가? 라고 생각했으나 시간 제한 2초에 N의 최댓값은 500,000이기 때문에 시간초과로 풀 수 없고 다른 방법을 사용해야 했다. 안쪽 for 문이 실행되지 않는 순간 = swap이 발생하지 않았다 = 정렬이 완료됐다 라는 뜻이고, 나는 이 정렬 완료 시점을 찾아야 하는 것이다. 그러기 위해서는 정렬 전 인덱스와 정렬 후 인덱스가 필요한데 이 두 인덱스를 비교해서 각 데이..
[백준/Java] #12891 DNA 비밀번호
·
알고리즘
📝 DNA 비밀번호사용 언어 : Java레벨 : 실버 2 🔗 https://www.acmicpc.net/problem/12891 🔎 문제 설명 ✅ 풀이투 포인터와 비슷하게 풀면 되는 문제였다. 나는 HashMap 을 이용해서 inputCnt 에는 필요한 문자의 개수들을 넣어줬고, pwCnt 에는 부분 문자열에서 각 문자의 개수를 넣어줘서 풀었다! 처음에 들어올 때 A, C, G, T의 필요한 문자의 개수가 0이라면 cnt (필요한 문자의 개수와 부분 문자열의 문자 개수가 같은 개수를 카운팅하는 변수) 를 늘려주었다.일단 add() 메서드와 remove() 메서드를 작성했는데, add에서는 내 문자 map인 pwCnt 에서 입력받은 문자의 카운팅을 하나 늘려주고, 만약 하나 늘린 값이 inputCnt..
[백준/Java] #10986 나머지 합
·
알고리즘
📝 나머지 합사용 언어 : Java레벨 : 골드 3 🔗 https://www.acmicpc.net/problem/10986 🔎 문제 설명 ✅ 풀이문제를 읽어봤을 때는 간단한 문제인 것 같았다. 하지만 N의 최댓값은 10^6 개 이고 각 구간의 합들을 구해야 하기 때문에 1초 안에 연산하기는 쉽지 않다. 결국 다른 방법을 써야한다는 것인데 이 문제에는  구간 합 공식을 적용해서 풀면 빠르게 풀 수 있다. 구간 합에 대해서는 저번에 구간 합 구하기 문제들을 풀었을 때 적어 놓았다.https://gureumi74.tistory.com/65 [백준/Java] #11659 구간 합 구하기 4, #11660 구간 합 구하기 5구간 합 구하기 4사용 언어 : Java레벨 : 실버3📎https://www.acm..
[백준/Java] #5427 불
·
알고리즘
✏️ 불 사용 언어 : Java레벨 : 골드 4📎https://www.acmicpc.net/problem/5427 🔎 문제 설명상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다.매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에는 불이 붙지 않는다. 상근이는 동서남북 인접한 칸으로 이동할 수 있으며, 1초가 걸린다. 상근이는 벽을 통과할 수 없고, 불이 옮겨진 칸 또는 이제 불이 붙으려는 칸으로 이동할 수 없다. 상근이가 있는 칸에 불이 옮겨옴과 동시에 다른 칸으로 이동할 수 있다.빌딩의 지도가 주어졌을 때, 얼마나 빨리 빌딩을 탈출할 수 있는지 구하는 프로그램을 작성하시오. 📌 입력과 출력 입력첫째 줄에 테스트 ..
[백준] #5430 AC
·
알고리즘
✏️ AC사용 언어 : Java레벨 : 골드 5📎AC 🔎 문제 설명선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다.함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다.함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "RDD"는 배열을 뒤집은 다음 처음 두 수를 버리는 함수이다.배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오.📌 입력과 출력 입력 : 첫째 줄..
[백준] #13300 방 배정, #1919 애너그램 만들기
·
알고리즘
✏️ 방 배정 사용 언어 : Java레벨 : 브론즈 2📎방 배정 🔎 문제 설명정보 초등학교에서는 단체로 2박 3일 수학여행을 가기로 했다. 여러 학년이 같은 장소로 수학여행을 가려고 하는데 1학년부터 6학년까지 학생들이 묵을 방을 배정해야 한다. 남학생은 남학생끼리, 여학생은 여학생끼리 방을 배정해야 한다. 또한 한 방에는 같은 학년의 학생들을 배정해야 한다. 물론 한 방에 한 명만 배정하는 것도 가능하다.한 방에 배정할 수 있는 최대 인원 수 K가 주어졌을 때, 조건에 맞게 모든 학생을 배정하기 위해 필요한 방의 최소 개수를 구하는 프로그램을 작성하시오.예를 들어, 수학여행을 가는 학생이 다음과 같고 K = 2일 때 12개의 방이 필요하다. 왜냐하면 3학년 남학생을 배정하기 위해 방 두 개가 필요하..
[프로그래머스] 기초 문제 풀이 (조건에 맞게 수열 변하기 2, 1로 만들기, 문자열이 몇 번 등장하는지 세기)
·
알고리즘
✏️ 조건에 맞게 수열 변하기 2사용 언어 : Java레벨 : 0📎https://school.programmers.co.kr/learn/courses/30/lessons/181881 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 🔎 문제 설명정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다.이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수..
[백준/Java] #11659 구간 합 구하기 4, #11660 구간 합 구하기 5
·
알고리즘
구간 합 구하기 4사용 언어 : Java레벨 : 실버3📎https://www.acmicpc.net/problem/11659 접근우선 N개의 수를 입력받음과 동시에 합 배열을 생성한다.합 배열 공식 : S[i] = S[i-1] + A[i] Index12345배열 A54321합 배열 S59121415   for(int i = 1; i   특정 구간의 합 공식 : S[j] - S[i - 1] index12345합 배열 S59121415 index 1부터 3까지의 구간 합은 S[3] - S[0] = 12 - 0 = 12index 2부터 4까지의 구간 합은 S[4] - S[1] = 14 - 5 = 9index 5부터 5까지의 구간 합은 S[5] - S[4] = 15 - 14 = 1 for(int k = 0; k..
[프로그래머스] 기초 문제 풀이 (0 떼기, 치킨 쿠폰, 간단한 식 계산하기, 세 개의 구분자, 배열의 원소만큼 추가하기, 무작위로 K개의 수 뽑기)
·
알고리즘
0 떼기사용 언어 : Java레벨 : 0📎https://school.programmers.co.kr/learn/courses/30/lessons/181847 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명정수로 이루어진 문자열 n_str이 주어질 때, n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항2 ≤ n_str ≤ 10n_str이 "0"으로만 이루어진 경우는 없습니다. 입출력 예 풀이class Solution { public String solution(String n_str) { int id..
[프로그래머스] 기초 문제 풀이 (두 수의 합, 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기, ad 제거하기, 접미사인지 확인하기, 공백으로 구분하기 1, X 사이의 개수)
·
알고리즘
두 수의 합사용 언어 : Java레벨 : 0📎https://school.programmers.co.kr/learn/courses/30/lessons/181846 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요. 제한사항1 ≤ a의 길이 ≤ 100,0001 ≤ b의 길이 ≤ 100,000a와 b는 숫자로만 이루어져 있습니다.a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다. 입출력 예  ✏️ 풀이 우선 엄청 큰 숫자까지 들어올 수 있기 때문에 처음부터 int..
[프로그래머스/Java] 코딩 기초 트레이닝 복습
·
알고리즘
홀짝에 따라 다른 값 반환하기사용 언어 : Java레벨 : 0📎 https://school.programmers.co.kr/learn/courses/30/lessons/181932 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명문자열 code가 주어집니다.code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다.mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다.mode..