반응형

java 81

프로그래머스 - 피보나치 수 java :: 모듈로 연산

문제 코딩테스트 연습 - 피보나치 수 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 💣시도1: 재귀함수 보통 피보나치는 재귀로 풀면 쉽습니다. 단, 재귀함수는 연산해야 할 양이 많아지면 차지하는 메모리의 양도 많아지고 처리속도의 효율도 매우 좋지 않아요. n은 최대 10만까지 입력이 가능하므로 재귀로 푸는 방법은 좋지 않은 방법입니다. (사실 저도 처음엔 재귀로 풀었다가 시간초과 나왔습니다.) 💣시도2: 반복문 재귀룰 포기하고 반복문으로 문제를 풀었습니다만... 문제는 7~14번이 계속 오류가..

Algorithm/Java 2022.07.15

프로그래머스 - 하노이의 탑 java (재귀/반복문) :: 12946

문제 링크 코딩테스트 연습 - 하노이의 탑 | 프로그래머스 스쿨 (programmers.co.kr) 문제 이해하기 하노이의 탑 문제는 재귀 함수를 연습하는 대표적인 문제입니다. 재귀 함수를 구현하기 위해서는 규칙을 찾아야 합니다. n=3일 경우로 예를 들어보겠습니다. 이렇게 초기 상태인 [주황+노랑+초록]을 hanoi(n) 이라고 표현하겠습니다. 가장 큰 원판을 3번기둥으로 옮기는 방법은? 가장 아래에 있는 주황색 원판을 3번 기둥으로 옮기기 위해서는 [노랑+초록]이 2번 칸에 있어야 하며, 3번 기둥은 비어있어야 합니다. [노랑+초록]원판을 hanoi(n-1)이라고 표현하겠습니다. [노랑+초록]을 2번 기둥으로 옮기는 방법 [노랑+초록]을 2번으로 옮기기 위해서 위의 과정을 거쳐야 합니다. 1 -> 3..

Algorithm/Java 2022.07.13

프로그래머스 - JadenCase 문자열 만들기 java :: 12951

문제 링크 코딩테스트 연습 - JadenCase 문자열 만들기 | 프로그래머스 스쿨 (programmers.co.kr) 문제 풀이 1번 풀이 모든 문자를 직접 순회하며 조건에 맞게 대/소문자 치환 public String solution(String s) { StringBuilder sb = new StringBuilder(); boolean flag = true; for(char ch : s.toCharArray()) { sb.append(flag ? Character.toUpperCase(ch) : Character.toLowerCase(ch)); flag = (ch == ' ') ? true : false; } return sb.toString(); } 대문자가 되는 기준은 첫문자와 ..

Algorithm/Java 2022.07.12

프로그래머스 - 로또의 최고 순위와 최저 순위 java :: 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

77484 https://school.programmers.co.kr/learn/courses/30/lessons/77484?language=java#fn1 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 📌로또의 수는 45개이고, 각 배열(lottos, win_nums)의 길이는 6개로 고정입니다. 📌알아야 할 것은 "몇 개를 맞췄느냐?", "몇 개가 낙서되었느냐?" 입니다. 위 두 개의 핵심으로 생각해보면 많이 맞춘 경우는 낙서된 수가 모두 당첨 번호라고 가정하고 [맞춘 개수 + 낙서된 수] 많이 맞추지 못한 경우는 낙서된 수가 모두 꽝이라고 가정..

Algorithm/Java 2022.07.09

프로그래머스 - 신고 결과 받기 java :: 2022 KAKAO BLIND RECRUITMENT

92334 https://school.programmers.co.kr/learn/courses/30/lessons/92334?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 저는 신고자의 기준이 아닌 신고 당하는 사람을 기준으로 코드를 작성했습니다. 📌결과는 신고자의 index의 값을 구해야 합니다. 📌신고자는 같은 유저를 2번 이상 신고해도 1번으로만 처리됩니다. (중복 신고가 불가능합니다.) 중복이 불가능하다는 뜻은 Set이 활용되기 가장 좋은 문제라는 뜻이기도 합니다. 📝풀이1 public int[] solution(St..

Algorithm/Java 2022.07.09

프로그래머스 - 숫자 문자열과 영단어 java :: 2021 카카오 채용연계형 인턴십

81301번 코딩테스트 연습 - 숫자 문자열과 영단어 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 📌각 숫자에 매칭되는 알파벳이 있다. 📌영단어의 위치는 랜덤이며 2번이상 연속으로 영단어가 나올 수도 있다. 📝풀이1 public int solution(String s) { List alphabet = Arrays.asList( "zero","one","two","three","four","five","six","seven","eight","nine"); StringBuilder answer ..

Algorithm/Java 2022.07.08

프로그래머스 - 키패드 누르기 java :: 2020 카카오 인턴십

67256번 코딩테스트 연습 - 키패드 누르기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 📌키패드의 위치 중 left, mid, right를 기준으로 행의 위치를 알고 있으면 답을 구하기 쉬워요. 예를 들어 키패드를 그대로 행의 인덱스 값을 부여하면 아래와 같습니다. 0 0 0 1 1 1 2 2 2 3 3 3 📌거리 계산이 핵심인데, 거리 계산을 하기 위해서는 손가락의 위치를 먼저 알아야 해요. 그래서 3개의 핵심이 있는 것 같아요. 🎈누르려는 엄지의 방향 (L / R) 🎈누르려는 키의 위..

Algorithm/Java 2022.07.08

프로그래머스 - 신규 아이디 추천 java :: 2021 KAKAO BLIND RECRUITMENT :: 72410

문제 링크 코딩테스트 연습 - 신규 아이디 추천 | 프로그래머스 스쿨 (programmers.co.kr) 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한..

Algorithm/Java 2022.07.08

프로그래머스 - 크레인 인형뽑기 게임 java :: 2019 카카오 개발자 겨울 인턴십 :: 64061

문제 링크 코딩테스트 연습 - 크레인 인형뽑기 게임 | 프로그래머스 스쿨 (programmers.co.kr) 문제 이해하기 2차원배열 board의 값이 0이면 해당 자리는 공백으로 봐야 합니다. 각 인형의 고유의 숫자로 표현되며, 인형을 뽑았으면 해당 인덱스의 값을 0으로 바꿔 공백으로 표현해야 합니다. 특정 공간에 넣었다 뺐다를 반복할 때 가장 좋은 방법은 Stack이라고 생각합니다. 문제 풀이 코드-1 public int solution(int[][] board, int[] moves) { int answer = 0, doll = 0; Stack stack = new Stack(); for(int move : moves) { move--; for(int i=0; i 0) { board[i][move]..

Algorithm/Java 2022.07.07
반응형