본문 바로가기

분류 전체보기

(192)
JAVA(2022.06.19) - 특정문자를 포함 및 대체 코딩테스트 연습을 하면서 종종 사용하는데, 다시 한번 복습하는 차원에서 내용을 정리하고자 한다 contains() 문자열에서 찾고자 하는 문자열이 포함되어있는지 여부를 알려준다 indexOf(String str) 인자로 주어진 값의 index번호를 return 해준다 replace(찾을 문자열, 바꿀 문자열) 찾을 문자열이 존재한다면 그 문자열을 2번째 인자값으로 바꿔준다 replaceAll(기존문자, 대체문자) replaceAll("[0-9]', "A"); > 0-9 숫자를 모두 A로 다 대체한다 replaceAll("나는", "너는"); > "나는"이라는 문자열 모두를 "너는"으로 대체해준다
Myplan 보호되어 있는 글입니다.
프로그래머스<완주하지 못한 선수> 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예participantcompletionreturn ["leo", "kiki",..
프로그래머스<나머지가 1이 되는 수 찾기> 문제설명 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 나의 코드 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i
최소공배수와 최대공약수 최대공약수를 푸는 방법에는 유클리드 호제법이 있다. 유클리드 호제법 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다 - 유클리드 호제법 코드 static int gcd(int x, int y){ if(y==0) return x; else{ return gcd(y, x%y); } } 이렇게 재귀적인 코드를 통해 최대공약수를 쉽게 구할 수 있다 최소공배수 구하기 최소공배수를 구하는 방법은 매우 쉽다. 두 수의 곱에 최대공약수를 나눠주면 되기 때문이다 최소공배수..
스택으로 재귀함수를 비재귀적으로 구현하기 스택이란? - 자료를 임시적으로 저장하며 First In Last Out 구조를 가지고 있다 코드 static void recur(int n){ IntStack s = new IntStack(n); while(true){ if(n>0){ s.push(n); n=n-1; continue; } if(s.isEmpty() != true){ n=s.pop(); System.out.println(n); n = n -2; continue; } break; } } 과정 n=4 4를 푸쉬>3을 푸쉬>2를 푸쉬>1을 푸쉬> 1을 팝&출력>2를 팝&출력>3을 팝&출력>1을 푸쉬>1을 팝&출력> 4를 팝&출력 > 2를 푸쉬>1을 푸쉬> 1을 팝&출력 > 2를 팝&출력
재귀 알고리즘 어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)라고 한다 ex) 팩토리얼 static int factorial(int n){ if(n>0){ return n*factorial(n-1); } else{ return 1; } 유클리드 호제법 static int gcd(int x, int y){ if(y==0){ return x; } else{ return gcd(y, x%y); } } 재귀 알고리즘 예시 static void recur(int n){ if(n>0){ recur(n-1); System.out.println(n); recur(n-2); } } recur(4); 결과값 1 2 3 1 4 1 2 recur(4) recur(3) print(4) rec..
프로그래머스<정수 제곱근 판별> 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예nreturn 121 144 3 -1 입출력 예 설명 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. class Solution { public long solution(long n) { long answer = 0; answer = (long)Math.sqrt(n); if(n == ..