Algorithm

위 문제는 자바에서 제공하는 문자열 자르기(substring) 기능을 사용하여 문자열의 길이가 홀수, 짝수일 때 알맞게 사용자에게 문자열을 출력시켜주면 된다. 파라미터로 문자열을 넘기고, substring을 이용하여 출력해주면 되겠다! 라고 생각까지 했는데, 어떻게 잘라서 보여줄 지 고민을 많이 해봤던 거 같다. substring에는 startidx, endidx 두개 다 지정할 수도 있고, startidx만 지정할 수 있으니 앞으로 비슷한 문제나 실무에서 써야하는 일이 생긴다면 참고해서 사용하면 된다. 아래는 해답 package list; public class Programmers_MiddleString { public static String solution(String s) { // 모든 코드가 ..
진짜.. 요 며칠간 힘들게 푼 문제 ㅠㅠ 테스트 케이스가 4, 3, 2, 1 이랑 10 두개만 있었을 때는 아무리 돌려도 통과가 되는데 제출만 하면 아래와 같이 알 수 없는 런타임 에러와 테스트 실패가 연이어 나왔다 ㅠㅠ 최초 작성했던 소스는 이렇다. 런타임이 발생했던 원인은 전에 작성했던 for (int i = 0; i < s.length; i++) { if (s[i] != compNum) { answer[i] = s[i]; } } 이 코드가 문제였는데, answer[i] 는 위에서 s.length에 -1을 한 값으로 배열을 만들어놨는데, 작은 크기에 s[i]를 넣어주려고 하니, ArrayIndexOutOfBoundsException이 발생하거나, 혹여나 코드가 실행되도, 전부 실패처리가 되어버리는 것..
n을 스캐너로 입력받아 삼각형을 출력하면 되는 문제. 스캐너와 이중반복문을 사용하여 줄바꿈을 해가며 '*' 문자를 찍어주면 되는 문제! package list; import java.util.Scanner; public class Codeup1353 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("n의 값을 입력해주세요 : "); int input = sc.nextInt(); for (int i = 0; i < input; i++) { for(int j = 0; j
정수를 담고 있는 배열의 평균값을 리턴하는 solution 함수를 완성하라는 문제, 1 2 3 4 가 넘어왔을 때, 5 5 가 넘어왔을 때 등 여러가지 형태의 배열이 넘어와도 그 배열의 평균을 구해서 사용자에게 출력해주면 되는 문제 자바를 처음 배웠을 때 스캐너를 배우면서 3개~4개의 숫자를 직접 입력받아 평균을 구하는 문제가 있었는데, 이런식으로 배열을 받아 배열의 평균을 내는건 처음 해봤던 거 같다. 음.. 그래도 다른 레벨 1 문제랑 비교해보면 나름 쉬웠던 문제였다. package list; public class Programmers_Average { public static double solution(int[] s) { // 결과를 저장할 double 변수 double answer = 0; /..
전공자라면 누구나 한번쯤 겪어봤을 공포의 별찍기 자바버전 그래도 계단형 별찍기도 아니고 그냥 단순 사각형 별찍기라서 난이도는 상당히 낮은편이다 스캐너의 존재를 알고 있고, 이중반복문만 사용할 수 있다면 쉽게 풀 수 있는 문제! 더 이상의 설명은 생략..해도 되려나? 아래는 해답 package list; import java.util.Scanner; public class Programmers_RectangleStar { public static void solution(int a, int b) { Scanner sc = new Scanner(System.in); // 별을 찍기 위한 int 변수 //a = sc.nextInt(); //b = sc.nextInt(); // 반복문! for (int i = ..
문자열을 하나 받아서, 배열로 만들어주고 큰것부터 작은 순으로 정렬하여 사용자에게 출력해주면 되는 문제, 문자열을 배열로 만드는건 다른 문제들을 풀면서 어떻게 해야하는지 알고 있었지만, 문자열 정렬은 처음이었다. 오라클이었으면 ORDER BY 사용해서 그냥.. 내 마음대로 오름차순, 내림차순 정렬하면 됐겠지만 자바에서는 해본 적이 없어 검색도 해보고 다른 사람들의 풀이도 보면서 해답을 찾아나갔다. Arrays와 Collections을 사용하여, 배열을 정렬시켰는데 정말 고맙게도 Collections에 reverse가 있어 낼름가져다가 사용하였다. 위의 두 메소드를 이용하면 이번 문제는 쉽게 풀 수 있다. 사실상 공부만 조금 더 했다면 풀 수 있었던 문제! 누구나 처음엔 모를 수 있으니까 이번 문제풀이를 ..
같은 숫자는 싫어! 문제에도 나와있듯 배열안에 같은 숫자를 모두 지우는게 아니라, '연속적으로 나타나는' 숫자만 제거해주면 되는 문제이다. 처음에는 반복문을 하나만 쓸까 두개를 만들어서 쓸까 생각을 많이 해봤는데, 엄청 단순하게 배열로만 풀어야한다고 생각을해서 이중포문을 만들어서 문제를 풀려고 했으나, 진짜 도저히 풀 수가 없었다.. 아는게 그만큼인건지 애초에 푸는 방식이 잘못됐던건지 지금은 알 수 없지만 ㅠㅠ.. 결국 ArrayList를 사용해서 문제를 풀기로 했다. 실무에서 ArrayList를 본 적도 있고 내가 사용해본적도 있었는데, 알고리즘 문제를 풀면서 다시 쓰니까 느낌이 새로웠다. 해답을 보기전에 문제를 정리해보자면 이렇다. 숫자로만 이루어져있는 배열이 하나 있는데, 이 배열에서 연속된 숫자는..
위 문제는 자바의 Integer를 알고 있다면 쉽게 풀 수 있는 문제다. Integer의 parseInt를 사용해서, 문자열 s를 int로 형변환하여 사용자에게 출력만 해주면 되는 문제. 더 이상 설명이 필요없기 때문에 설명은 간단하게! 금요일이니까~ package list; public class Programmers_StringParseInt { public static int solution(String s) { // 결과를 저장할 int 변수 int answer = 0; // 문자열로 넘어온 s를 함수를 사용하여 answer에 담아준다 answer = Integer.parseInt(s); // answer에 담긴 값 리턴 return answer; } public static void main(S..
조건문을 활용하여 짝수일 때 "Even" 홀수일 때 "Odd"를 출력하면 되는 간단한 문제 package list; public class Programmers_EvenAndOdd { public static void solution(int s) { // 결과를 리턴할 String 변수 String answer = ""; // s를 2로 나눴을 때 나머지가 0일 경우 if(s % 2 == 0) { // 짝수 answer = "Even"; } else if (s == 0) { // 나눈값과 상관없이 0일 경우 짝수 answer = "Even"; } else { // 나머지가 0이 아닐 경우 홀수 answer = "Odd"; } // 결과 리턴 System.out.print(answer); } public ..
프로그래머스 코딩테스트 연습 레벨1 문제중에 제일 쉬운 문제가 아닐까.. 싶은 문제 String형 배열 seoul에서 "Kim"의 위치를 찾으면 되는 간단한 문제! 보통 나같은 경우에는 문제를 IDE에서 먼저 풀어보고 결과가 의도한대로 나오면 웹 IDE로 옴기는데, 이번 문제 같은 경우에는 분명 맞게 푼 거 같은데 계속 오답이 나오길래 뭐지..? 했다 천천히 살펴보니 문제에서 이미 seoul이라는 배열을 제공해주고 있었다.. 가끔씩 급하게 하다가 실수를 하곤 하는데, 그 습관이 여기서도 나왔던 거 같다. 앞으로 천천히 문제부터 읽고, 정확히 어떤것을 해야하는지 정해놓고 코딩하는 습관을 길러야겠다. 실무에서도 마찬가지지만 어떤 과제가 주어지면 우선 급한대로 풀고보자라는 생각이 들어 고쳐야겠다고 생각은 했었..
음.. 뭔가 아리까리 했던 문제 레벨 1이지만 나는 레벨1도 못 되는걸 알기에...ㅠㅠ 여기저기 검색도 많이 해보고 풀게 된.. 문제 어떻게 풀어야 하는지는 알겠는데 어디부터 건드려야 할지 몰랐는데 어찌어찌하다 보니 거의 다 와서 마지막에 반복문 돌리는거만 더 찾아봤던 거 같다..! 앞으로는 풀이마다 최대한 주석을 달아서 틀린 부분은 바로 잡고 나~~중에 봐도 깜빡하지 않도록 잘 적어놔야겠다. 아래는 해답! package list; public class Programmers_OkasiString { public static String solution(String s) { // s 문자열을 받아, split 함수로 알맞게 크뜨크뜨 String[] arr = s.split(""); // 인덱스 변수 선언..
숫자 텍스트가 들어간 배열과 문자 배열을 생성하고, 배열의 크기만큼 반복문을 실행하며 일치하는 텍스트가 있다면 문자를 숫자로 바꿔 반복문이 종료된 후 문자열을 반환한다. 정답! package list; public class ProgrammersKakao2021_IntString { public static int solution(String s) { String[] numInt = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; String[] numStr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for(int i = 0; i < 10; i++) { ..
정보 선생님은 프로젝트 걸그룹 IOI를 매우 싫어 한다. 그 이유는 국제정보올림피아드(International Olympiad in Informatics:IOI)의 이름과 동일해서, 인터넷 검색창에 IOI를 입력할 경우 더 이상 국제정보올림피아드에 대한 정보를 찾기가 힘들어 졌기 때문이다. 입력으로 IOI가 입력될 경우, IOI is the International Olympiad in Informatics.를 출력하는 프로그램을 작성하시오. 만약 IOI가 아닌 다른 글자가 들어오는 경우, I don't care.를 출력한다. 이 문제는 문자열 문제집의 거의 처음 부분에 해당하는 love 문제를 풀었다면 쉽게 풀 수 있는 문제이다. 조건문을 사용하여 사용자가 입력한 문자가 'IOI' 에 해당하면 IOI ..
영단어 하나가 입력된다. 그 단어가 love이면 I love you. 를 출력하시오. 앞서 올린 문자 출력하기 문제를 가볍게 풀었다면 이런류의 문제는 쉽게 풀 수 있다. 완전 기초적인 단계이긴 하지만 아무것도 모르는 프로그래밍 입문자들은 상당히 어려울 문제. Scanner를 하나 생성하고 친절하게 love 를 소문자로 입력해달라고 사용자에게 메시지를 출력한다. 사용자가 콘솔에 문자를 입력하면 해당 문자열을 String 변수에 집어넣고 조건문을 하나 작성한다. 사용자가 입력한 문자가 love가 맞다면 I love you. 를 출력, 사용자가 입력한 문자가 love 이외의 것이라면 다른 메시지를 출력한다. package list; import java.util.Scanner; public class Code..
입력된 문자를 그대로 출력한다. 스캐너를 사용하는 방법만 알고 있다면 더 이상 설명할 게 없는 문제 스캐너 사용방법을 모른다면 우선 Scanner에 대해서 찾아보고, 공부해보고 문제를 풀어야한다. Scanner를 하나 만들고, 친절하게 사용자에게 문자를 입력하라고 출력한다. 사용자가 콘솔에 문자를 입력하면 해당 문자를 입력하면 Scanner로 입력 받은 문자를 String 변수에 넣어주고, 바로 출력만 해주면 끄읏 package list; import java.util.Scanner; public class Codeup1131 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("출력..
헌일