본문 바로가기

반응형

Algorithm

[Algorithm/Java][BOJ] 1439번 뒤집기 [BOJ] 1439번 뒤집기 https://www.acmicpc.net/problem/1439 문제접근 0이 같이 있는 그룹과 1이 같이 있는 그룹이 몇 그룹인지 세면 된다고 생각해서 처음에는 0에서 1로 바뀌는 부분에서 cnt에 +1을 해준다고 생각했다. 이렇게 하면 모든 그룹을 다 세기 때문에 오답이 되었다. 그래서 zeroGroup과 oneGroup을 이용해서 각자 따로따로 하나씩 세서 더 작은 값을 출력해 주었다. 하지만 마지막 부분에 있는 그룹은 처음 로직으로는 카운트가 안되서 for문 마지막일 때 현재 cur값의 group에 +1을 해주었다. Code import java.util.Scanner; public class Main { public static void main(String[] a.. 더보기
[Algorithm/Java][프로그래머스] 문자열 내 마음대로 정렬하기 [프로그래머스] 문자열 내 마음대로 정렬하기 https://programmers.co.kr/learn/courses/30/lessons/12915 문제접근 문자열에서 n번째 문자로 먼저 정렬하고 나머지는 사전순으로 정렬을 해야하기 때문에 기존에 sort 알고리즘으로는 정렬을 할 수가 없어서 Comparator에 compare함수를 직접 커스텀해서 Arrays.sort를 사용하였다. Code import java.util.*; class Solution { public String[] solution(String[] strings, int n) { Arrays.sort(strings,new Comparator() { @Override public int compare(String s1, String s2).. 더보기
[Algorithm/Java][프로그래머스] [1차] 비밀지도 [프로그래머스] [1차]비밀지도 https://programmers.co.kr/learn/courses/30/lessons/17681 문제접근 입력으로 정수로 된 배열 2개를 주고, 이 정수를 이진수로 변환하여서 둘 중 하나라도 1인곳이면, 벽으로 간주하는 문제이다. 처음에는 if문으로 하나하나 바꾸고 비교해볼 생각이였지만, 너무 오래걸리고 코드도 더러워서 문제해설을 보니 비트연산을 이용하라는 것이였다. 그래서 둘 중 하나라도 1인 곳이 벽으로 간주하는 것이기 때문에 OR연산을 이용하고 자바의 비트연산을 사용해 보았다. Code class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new St.. 더보기
[Algorithm/Java][프로그래머스] 3진법 뒤집기 [프로그래머스] 3진법 뒤집기 https://programmers.co.kr/learn/courses/30/lessons/68935 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 n은 1 이상 100,000,000 이하인 자연수입니다. Code java class Solution { public int solution(int n) { int answer = 0; String tmp = ""; while(n>0){ int a = n%3; tmp += a; n=n/3; } for(int i=0; i 더보기
[Algorithm/JAVA][프로그래머스] 실패율 [프로그래머스] 실패율 https://programmers.co.kr/learn/courses/30/lessons/42889 문제설명 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레.. 더보기
[Algorithm/Java][프로그래머스] 직업군 추천하기 [프로그래머스] 직업군 추천하기 https://programmers.co.kr/learn/courses/30/lessons/84325 문제 설명 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부여한 표입니다. 점수 SI CONTENTS HARDWARE PORTAL GAME 5 JAVA JAVASCRIPT C JAVA C++ 4 JAVASCRIPT JAVA C++ JAVASCRIPT C# 3 SQL PYTHON PYTHON PYTHON JAVASCRIPT 2 PYTHON SQL JAVA KOTLIN C 1 C# C++ JAVASCRIPT PHP JAVA 예를 들면, SQ.. 더보기
[Algoritm/Java][프로그래머스] 신규 아이디 추천 [프로그래머스] 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 .. 더보기
[Algorithm/Java][프로그래머스] 다트 게임 [프로그래머스] [1차] 다트 게임 https://programmers.co.kr/learn/courses/30/lessons/17682 문제 설명 다트 게임 카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~ 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single(S), Double(D), Triple(T) 영.. 더보기