애정코딩 💻

11월 26일 2문제 - Java : Two pointers

1. 두 배열 합치기 첫 번째 줄에 첫 번째 배열의 크기 N(1

알고리즘 2021.11.26 Joana

11월 22일 1문제 - Java : Array

1. 멘토링 현수네 반 선생님은 반 학생들의 수학점수를 향상시키기 위해 멘토링 시스템을 만들려고 합니다. 멘토링은 멘토(도와주는 학생)와 멘티(도움을 받는 학생)가 한 짝이 되어 멘토가 멘티의 수학공부를 도와주는 것입니다. 선생님은 M번의 수학테스트 등수를 가지고 멘토와 멘티를 정합니다. 만약 A학생이 멘토이고, B학생이 멘티가 되는 짝이 되었다면, A학생은 M번의 수학테스트에서 모두 B학생보다 등수가 앞서야 합니다. M번의 수학성적이 주어지면 멘토와 멘티가 되는 짝을 만들 수 있는 경우가 총 몇 가지 인지 출력하는 프로그램을 작성하세요. 1. 1 번째 ,2 번째 for문은 멘토링이 되는 학생의 수 만큼의 경우의수에 따라 검색 하기 위함 2. 3번째 for문은 그 경우의 수가 test만큼 있기 때문 3...

알고리즘 2021.11.22 Joana

[프로그래머스 Lv.1] 로또의 최고 순위와 최저 순위

https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr java class Solution { public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[2]; // 1,2,3,4,5,6-7(낙첨) int[] level = {6,6,5,4,3,2,1}; int cnt = 0; int win_c..

알고리즘 2021.11.14 Joana

11월 13일 1문제 - Java : Array

1. 임시반장 정하기 김갑동 선생님은 올해 6학년 1반 담임을 맡게 되었다. 김갑동 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. 그는 자기반 학생 중에서 1학년부터 5학년까지 지내오면서 한번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다. 그래서 김갑동 선생님은 각 학생들이 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 표를 만들었다. 예를 들어 학생 수가 5명일 때의 표를 살펴보자. 위 경우에 4번 학생을 보면 3번 학생과 2학년 때 같은 반이었고, 3번 학생 및 5번 학생과 3학년 때 같은 반이었으며, 2번 학생과는 4학년 때 같은 반이었음을 알 수 있다. 그러므로 이 학급에서 4번 학생과 한번이라도 같은..

알고리즘 2021.11.13 Joana

11월 3일 1문제 - Java : Array

1. 봉우리 지도 정보가 N*N 격자판에 주어집니다. 각 격자에는 그 지역의 높이가 쓰여있습니다. 각 격자판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역입니다. 봉우리 지역이 몇 개 있는 지 알아내는 프로그램을 작성하세요. 격자의 가장자리는 0으로 초기화 되었다고 가정한다. 만약 N=5 이고, 격자판의 숫자가 다음과 같다면 봉우리의 개수는 10개입니다. 2차원 배열은 익숙하지 않아서 방향을 우째 for문에 담아야할지 감이 안와서 강의를 봤는데 보통 이런 문제에서는 배열에 방향을 먼저 담아 두고 그걸로 2중 for문을 돌아야 한다고 한다. import java.util.Scanner; public class Test02_10 { public int solution(int[][] numberA..

알고리즘 2021.11.03 Joana

10월 29일 1문제 - Java : Array

1. 격자판 최대합 5*5 격자판에 아래롸 같이 숫자가 적혀있습니다. N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합니다. import java.util.Scanner; public class Main { public int solution(int[][] numberArray, int number) { int result = 0; int x, y; for (int i = 0; i < number; i++) { x = y = 0; for (int j = 0; j < number; j++) { x += numberArray[i][j]; y += numberArray[j][i]; } result = Math.max(result, x); result = Math..

알고리즘 2021.10.29 Joana

10월 21일 4문제 - Java : Array

1. 자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다. 소수는 1과 자신으로만 나누어지는 수 입니다. 그러므로 2,3,4... 등 의 배수가 되면 안되겠죠! 여기서는 int 배열의 크기로 0 일때 count 되도록 했습니다. 2번째 for문에서 j=j+1 로 배수들을 체크 해주었습니다. (체크할 배수 만큼만 for문을 돈다) import java.util.Scanner; public class Test2_05 { public int solution(int number) { int result = 0; int[] ch = new int[number + 1]; f..

알고리즘 2021.10.25 Joana

10월 20일 4문제 - Java : Array

1. 큰 수 출력하기 N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요. (첫 번째 수는 무조건 출력한다) import java.util.ArrayList; import java.util.Scanner; public class Test2_01 { public ArrayList solution(int[] numberArray) { ArrayList result = new ArrayList(); result.add(numberArray[0]); for (int i = 0; i < numberArray.length-1; i++) { if(numberArray[i]=3){ result.add("A"); }else{ result.add("B"); } } return resul..

알고리즘 2021.10.20 Joana

10월 17일 2문제 - Java

1. 문자열 압축 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오. 단 반복횟수가 1인 경우 생략합니다. 우선 index 오류를 잡기 위해 어떤 방법을 써야 하는지 잘 몰라 강의를 참고 했다. 공백 문자를 추가해서 앞뒤 문자 를 비교하는 방식으로 했다. import java.util.Scanner; public class Test1_11 { public String solution(String sentence) { String result = ""; int cnt = 1; // 맨 끝 글자를 위해 공백 추가 > indexOfBind 방지 sentence = sentence + ..

알고리즘 2021.10.17 Joana

10월 16일 2문제 - Java

1. 숫자만 추출 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다. 알파벳이 아닌 것을 result 에 담은 후 parseInt 로 형변환 해주었다! import java.util.Scanner; public class Test1_09 { public int solution(String sentence) { String result = ""; for (int i = 0; i < sentence.length(); i++) { if (!Character.isAlphabeti..

알고리즘 2021.10.16 Joana

10월 14일 2문제 - Java

1. 회문 문자열 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다. 1. 애초에 처음 틀린 문자가 있을 경우 회문 문자열이 아니기 때문에 바로 return NO 를 return 한다. import java.util.Scanner; public class Main { public String solution(String sentence) { String result = ""; sentence = sentence.toLowerCase(); char[] ch = sentence.toCharArray(); in..

알고리즘 2021.10.14 Joana

10월 13일 2문제 - Java

1. 특정 문자 뒤집기 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고, 특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요. 1. 첫번째 index 에서 알파벳인지 확인한다. 특수문자일 경우 다음칸으로 index++; 2. 마지막 index에서 알파벳인지 확인한다. 특수문자일 경우 다음칸으로 index--; 3. 둘다 알파벳일 경우 서로 자리를 바꿔준 후 index++;, index--; 로 자리를 이동한다. import java.util.Scanner; public class Main { public String solution(String sentence) { String result = ""; char[] ch = sentence.toCharA..

알고리즘 2021.10.13 Joana