프로그래머스_문자열 내 마음대로 정렬하기
·
알고리즘/알고리즘 풀이
오늘의 문제는 문자열 내 마음대로 정렬하기다.이것도 예전에 풀었을 것 같아서 코 후비면서 들어갔는데 아니! 처음 푸는 문제였다. 풀이import java.util.*;class Solution { public String[] solution(String[] strings, int n) { Arrays.sort(strings, new Comparator() { @Override public int compare(String o1, String o2) { if(o1.charAt(n) == o2.charAt(n)) { return o1.compareTo(o2..
프로그래머스_문자열 내 p와 y의 개수 (for문 X)
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 오랜만에 코테 문제를 푼다.여태 코테 공부는 엄청난 작심삼일이었는데 2025년이 되었으니 제대로 해보고자다시 풀었던 문제도 다시 풀어 포스팅해보려고 한다.챗GPT 유료로 사용하는 김에 코딩테스트 커리큘럼과 커리큘럼에 맞는 프로그래머스의 문제를 추천해달라했다.일단 1주차 문제다. 저 중에 오늘은 '문자열 내 p와 y의 개수' 문제를 풀어보자.예전에 풀었던 문제라 예전에 제출한 내 코드가 남아있었다.// 예전 코드import java.util.*;class Solution { boolean solution(String s) { boolean ..
[백준] 17298_오큰수 - JAVA
·
알고리즘/알고리즘 유형
백준_17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 스택 참고 포스팅 [백준] 1874_스택 수열 - JAVA 백준_1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc. devhan.tistory.com 코드 import java.io..
[백준] 1874_스택 수열 - JAVA
·
알고리즘/알고리즘 유형
백준_1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 스택(Stack) 삽입과 삭제 연산이 후입선출(LIFO : Last-in First-out)으로 이루어진 자료구조이다. 후입선출은 산입과 삭제가 한 쪽에서만 이루어진다. 스택 용어 top : 삽입과 삭제가 일어나는 위치 push : top 위치에 새로운 데이터를 삽입하는 연산 pop : top 위치에 현재 있는 데이터를 삭제하고 확인하는 연산 peek : top 위치..
[백준] 11003_최솟값 찾기 - JAVA
·
알고리즘/알고리즘 유형
백준_11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 덱(deque) 위 문제는 슬라이딩 윈도우와 정렬을 사용하면 될 것 같지만 정렬은 nlog(n)의 시간 복잡도를 가지고, N과 L의 범위가 5,000,000인 이 문제에서는 정렬을 사용할 수 없다. O(n)의 시간 복잡도로 해결해야 한다. 정렬 대신 슬라이딩 윈도우와 덱(deque)이란 자료구조를 사용하면 이 문제를 풀 수 있다. 덱은 양 끝에서 데이터를 삽입하거나 삭제할 수 있는 자료구조이다. 왼쪽에서는 addFi..
[프로그래머스_1] 소수 찾기 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE import java.util.*; class Solution { public int solution(int[][] sizes) { int answer = 0; int w = 0; int h = 0; int maxW = 0; int maxH = 0; for(int i = 0; i < sizes.length; i++) { w = Math.max(sizes[i][0], sizes[i][1]); h = Math.min(sizes[i][0], sizes[i][1]); sizes[i][0] = w; sizes..
[프로그래머스_1] 소수 찾기 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE(기본) class Solution { public int solution(int n) { int answer = 0; boolean flag = true; for(int i = 2; i
[프로그래머스_1] 소수 만들기 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE import java.util.*; class Solution { public int solution(int[] nums) { int answer = 0; Arrays.sort(nums); for(int i = 0; i < nums.length; i++) { for(int j = i+1; j < nums.length; j++) { for(int k = j+1; k < nums.length; k++) { int result = isPrime(nums[i], nums[j], nums[k]); answer..
[프로그래머스_1] 숫자 짝꿍 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE import java.util.*; class Solution { public String solution(String X, String Y) { StringBuilder answer = new StringBuilder(); int[] xCntArr = new int[10]; int[] yCntArr = new int[10]; for(String x : X.split("")) { xCntArr[Integer.parseInt(x)]++; } for(String y : Y.split("")) { yCnt..
[프로그래머스_1] 햄버거 만들기 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE import java.util.*; class Solution { public int solution(int[] ingredient) { String recipe = "1231"; StringBuffer sb = new StringBuffer(Arrays.toString(ingredient).replaceAll("[^0-9]","")); int answer = 0; while(sb.indexOf(recipe) > -1) { int startIdx = sb.indexOf(recipe); sb.delet..
[프로그래머스_1] 2016 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE class Solution { public String solution(int a, int b) { int[] month = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; String[] week = {"FRI","SAT","SUN", "MON", "TUE", "WED", "THU"}; int sum = 0; for(int i = 1; i < a; i++) { sum += month[i]; } int idx = sum + b-1; return week[..
[프로그래머스_1] 체육복 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE import java.util.*; class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = n - lost.length; List list = new ArrayList(); for(int l : reserve) { list.add(l); } Arrays.sort(lost); Collections.sort(list); for(int i = 0; i < lost.length; i++) { for(int j ..
[프로그래머스_1] 모의고사 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE import java.util.*; class Solution { public List solution(int[] answers) { List answer = new ArrayList(); int[] score = {0, 0, 0}; int[][] supoja = { {1, 2, 3, 4, 5}, {2, 1, 2, 3, 2, 4, 2, 5}, {3, 3, 1, 1, 2, 2, 4, 4, 5, 5} }; int idx_1 = 0, idx_2 = 0, idx_3 = 0; int len_1 = supoja..
[프로그래머스_1] 삼총사 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE class Solution { public int solution(int[] number) { int answer = 0; for(int i = 0; i < number.length; i++) { for(int j = i+1; j < number.length; j++) { for(int k = j + 1; k < number.length; k++) { if(number[i] + number[j] + number[k] == 0) answer++; } } } return answer; } } 쉬운 난이도..
[프로그래머스_1] 두 개 뽑아서 더하기 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CODE import java.util.*; class Solution { public TreeSet solution(int[] numbers) { TreeSet answer = new TreeSet(); for(int i = 0; i < numbers.length; i++) { for(int j = i+1; j < numbers.length; j++) { answer.add(numbers[i] + numbers[j]); } } return answer; } } HashSet 자료구조를 이용할까 하다가 오름차..