본문 바로가기

Algorithm13

[Java | Algorithm] 연속된 자연수의 합 - 수학적풀이 lt와 rt로 2개의 pointer 개념을 이용한 문제풀이 방법은 이해가 됐지만 이런 수학적 풀이는 금방 까먹을게 뻔하기 때문에 (나 자신은 내가 잘 안다) 기록해두려 한다 ~.~ 설명 N입력으로 양의 정수 N이 입력되면 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는 방법의 가짓수를 출력하는 프로그램을 작성하세요. 만약 N=15이면 7+8=15 4+5+6=15 1+2+3+4+5=15 와 같이 총 3가지의 경우가 존재한다. 입력 첫 번째 줄에 양의 정수 N(7 15는 4개의 연속된 숫자 합으로 표현 불가능 즉, 자릿수만큼 연속된 숫자(cnt가 3이면 1, 2, 3)를 n에서 뺀 값을 자릿수와 % 연산했을 때 결과값이 0일 때(= 나누어 떨어질 때) cnt만큼 연속된 숫자합으로 n을 표현할 수 있다.. 2023. 4. 16.
[Java | Algorithm] 소수의 개수를 출력하시오. (에라토스테네스 체) 소수 갯수를 구하는 관련 문제는 굉장히 많이 접해왔는데(ㅡ.ㅡ) 풀때마다 까먹는 것 같아서 이김에 확실히 정리해두고 넘어가려고 한다. 인프런에서 자바 알고리즘 코테대비 강의를 듣고있고 해당 문제는 강의의 내용을 참조하였다. 설명 자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다. 입력 첫 줄에 자연수의 개수 N(2 2023. 3. 22.
[Java | programmers] 정규표현식(regex) 해당 포스팅은 https://school.programmers.co.kr/learn/courses/11/11-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D 에서 학습한 내용을 토대로 작성합니다. 인프런에서 자바 알고리즘 문제중 문자열 관련 강의를 수강하다가 replaceAll 메소드를 사용하는 모습을 보았고 이때 정규식에 무지한 나는 정규식을 학습 할 필요가 있다고 생각하여 이 포스팅을 작성하게 되었다. 정규표현식(regex)이란? 텍스트에서 원하는 조건과 일치하는 문자열을 찾아내거나 원하는 조건과 텍스트가 일치하는지 참/거짓 여부를 판단하는 등의 상황에 사용된다. 예를 들어, 여러 사람이 있는 경우 이름이 a로 시작하는 사람을 찾아내거나, 사용자가 입력한 문자열이 이.. 2023. 3. 13.
[java] 문장 속 단어 설명 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요. 문장속의 각 단어는 공백으로 구분됩니다. 입력 첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로 합니다. 예시 입력 1 it is time to study 예시 출력 1 study package inflearn; import java.util.Scanner; public class Str3 { public static void main(String[] args) { Scanner scanner = new Scanner(System... 2023. 2. 4.
[프로그래머스|최대공약수와 최소공배수] 유클리드 호제법 본인 풀이 class Solution { public int[] solution(int n, int m) { int[] answer = new int[2]; answer[0] = getGCD(n,m); answer[1] = (n * m) / (answer[0]); return answer; } public static int getGCD(int n, int m){ if(n % m == 0){ return m; } return getGCD(m,(n%m)); } } 풀이법 유클리드 호제법 2개 수의 최대 공약수를 구하는 알고리즘 자연수 a, b에 대해서 a%b의 결과를 r이라고 한다면 a, b의 최대공약수와 b, r의 최대공약수는 같다. 이 성질을 이용하여 a, b를 나눈 나머지 r을 구하고 b, r을 나눈.. 2022. 8. 31.
[프로그래머스|숫자 문자열과 영단어] replaceAll 함수 나의 해설 import java.util.*; class Solution { public int solution(String s) { int answer = 0; String[] words = {"zero","one","two","three","four","five","six","seven","eight","nine"}; int[] integers = {0,1,2,3,4,5,6,7,8,9}; StringBuffer sb = new StringBuffer(); ArrayList temp = new ArrayList(); // answer로 바꿀 list String[] s_array = s.split(""); for(String string : s_array){ try{ int k = Integer.par.. 2022. 8. 29.
[코드업] Python 기초 100제 6098, 6097, 6096, 6093, 6092 작성날짜: 2021/08/17 작성언어: Python 6098 : [기초-리스트] 성실한 개미(py) 문제설명 ​입력/출력 pan=[] for i in range(11): pan.append([]) for j in range(11): pan[i].append(0) # 0인덱스 뺴고 10*10 크기의 미로 상자 for i in range(10): route=list(map(int,input().split())) for j in range(10): pan[i+1][j+1]=route[j] # 개미는(2,2)부터 출발 x=2 # 세로 y=2 # 가로 while True: # 개미는 오른쪽이 벽이 아니라면 계속 오른쪽으로 간다. pan[x][y]=9 if pan[x][y+1]==2: # 오른쪽에서 먹이찾은경우 .. 2022. 8. 9.
[프로그래머스] 모의고사 작성날짜: 2021/08/13 작성언어: Java 문제설명 ​ 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에.. 2022. 8. 9.
[코드업|Python] 기초 100제 : 6015 작성날짜: 2021/08/03 6015 : [기초-입출력] 정수 2개 입력받아 그대로 출력하기2(설명)(py) input.split() 사용 시 공백을 기준으로 입력한 값을 나눈다. 단, a, b=input.split() 으로 a, b에 값을 저장하는 방식은 python에서만 적용된다. 2022. 8. 9.