Algorithm 306

7.럭키 스트레이트

📍 문제 설명 💡 접근 짝수로만 들어온다고 했으니 N/2로 나눈후 각 자릿수 합하기 👩‍💻 코드 public class Main { public static String solution(int n) { String answer = ""; String s = String.valueOf(n); int left_cnt = 0; int right_cnt = 0; for(int i = 0; i < s.length()/2; i++) { left_cnt += s.charAt(i) - '0'; } for(int i = s.length()/2; i < s.length(); i++) { right_cnt += s.charAt(i) - '0'; } if(left_cnt == right_cnt) answer += "LUCKY..

Algorithm/이코테 2021.12.11

6.무지의 먹방 라이브

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 💡 접근 처음에는 while, for문을 이용해서 풀려고 했으나 다 먹은 음식도 계속해서 체크를 하기 때문에 오답이었다. ArrayList로 해보려 했지만 음식을 없앨 순 없어도 음식 번호를 기억하는게 불가능했다. 그래서 큐를 사용해보기로 했다. 음식을 먹고나서 처리를 해주었다. 정확성은 15, 30번만 제외하고 풀렸다. 왜 틀린지는 질문란과 인터넷 검색해도 잘 안나와있어서 보류.. -> 우선순위 큐를 이용해야만 효율성 점수를 받을 수 있는 문제라고한다. 왜 큐로는 효율성에서 탈락할까를 생각해봤다. 문제를 보면 네트워크..

Algorithm/이코테 2021.12.10

5.볼링공 고르기

📍 문제 설명 A, B 두 사람이 볼링을 치고 있습니다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 합니다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여됩니다. 또한 같은 무게의 공이 여러개 있을 수 있지만, 서로 다른 공으로 간주합니다. 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재합니다. 문제 N개의 공의 무게가 각각 주어질 때, 두 사람이 볼링공을 고르는 경우의 수를 구하는 프로그램을 작성하세요. 입력 조건 첫째 줄에 볼링공의 개수 N, 공의 최대 무게 M이 공백으로 구분되어 각각 자연수 형태로 주어집니다. (1

Algorithm/이코테 2021.12.10

4.만들 수 없는 금액

📍 문제 설명 N개의 동전이 주어질 때 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하시오. 예를 들어, N = 5이고, 각 동전이 3,2,1,1,9원이면 최솟값은 8원 또 다른 예로 N= 3 이고, 각 동전이 3,5,7원이면 최솟값은 1원 입력 조건 첫째 줄에는 동전의 개수를 나타내는 양의 정수 N이 주어진다. ( 1 target = arrayList.get(0) -> 1원 동전 하나로 만들 수 있음 target += arrayList.get(0); (2) target = 2 (2원을 만들 수 있는지 확인) -> target > arrayList.get(1) -> 1원 동전 두개로 만들 수 있음 target += arrayList.get(1); (3) target = 3 (3원을 만..

Algorithm/이코테 2021.12.10

3.문자열 뒤집기

📍 문제 설명 💡 접근 0을 1로 바꾸는 방법과 1을 0으로 바꾸는 방법중 최솟값을 구해야한다. 전부 0으로 바꾸는 카운트 변수, 전부 1로 바꾸는 카운트 변수 선언하고 첫번째 값에(0 or 1) 따라 카운트 변수를 증가시켜줌 이후에 선형적으로 탐색하여 바로 앞에 값이랑 같이 다르면 카운트를 증가. 0으로 바꾸는 경우에는 숫자가 1일때 count0 증가 1로 바꾸는 경우에는 숫자가 0일때 count1 증가 👩‍💻 코드 import java.util.*; public class Main { public static int solution(String s) { int answer = 0; int count0 = 0; //전부 0으로 바꾸는 경우 int count1 = 0; //전부 1로 바꾸는 경우 //첫번..

Algorithm/이코테 2021.12.10

1.모험가 길드

📍 문제 설명 💡 접근 예제는 그렇게 안나왔지만 공포도가 낮은 모험가를 기준으로 모험을 보낼 수 있도록 한다. 모험가를 확인하면서 그룹에 포함된 모험가 수를 하나씩 증가시켜줌 ★★그룹에 포함된 모험가의 수 >= 해당 모험가의 공포도 이면 하나의 그룹으로 만들 수 있다. 그룹으로 만들었으면 그룹에 포험된 모험가의 수를 다시 0으로 지정해놓고 다시 반복한다. 👩‍💻 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) ..

Algorithm/이코테 2021.12.10

[2020 카카오 인턴십]키패드 누르기

📍 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다...

[2018 카카오 블라인드 1차]비밀지도

📍 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 ..

[2018 카카오 블라인드 1차]다트 게임

📍 문제 설명 다트 게임 카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~ 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1 , 점수2 , 점수3 )으로 계산된다. 옵션으로 스타상(*)..