정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요. make_max와 유사한 문제지만, 예외사항이 하나 더 추가됨으로써 판단하기 어려울 것 같았다. Try 1) int max = 0; int max2 = 0; for(int i = 0; i < numbers.length; i++){ if(max < Math.abs(numbers[i])) { max = numbers[i]; } } for(int i = 0; i < numbers.length; i++) { if(max2 < Math.abs(numbers[i]) && max != numbers[i]) { max2 = numbers[i]; } } ..
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요. 어떤 수의 제곱인지를 판별하는 문제이다. 어떤 수를 제곱하여 결과값을 구하는 것이 아닌 반대의 경우이기때문에 1부터 증가시키며 나눠질때까지 반복해야하는 것이 아닐까 생각도 했다. while(s_num < n) { s_num = i * i; // ... i++; } 처럼 n보다 작을때가지 반복하여 주어진 제곱 값이 나올 수 있도록 i를 하나씩 증가시키며 값을 찾았다. s_num == n 이게되면 정확한 제곱수이므로 break로 빠져나가고, answer를 반환한다. public class Is_square_num { publ..
1 ) 전역변수 = 스택프레임에 독립적임 = 코드 어느곳에서나 접근 가능 = 공유변수 라고도함 Q) 왜 전역변수 사용을 지양해야할까? >> 프로젝트 규모에 따라 코드가 커지면서 여러 메서드에서 전역 변수의 값을 변경하기 어렵게되면 메모리로 추적하지 않는 이상 전역 변수에 저장돼 있는 값을 파악하기 쉽지 않기 때문이다. 따라서 전역변수의 사용은 피해야하지만, 다만 읽기 전용으로 값을 공유해서 전역 상수로 쓰는 것은 추천. 대표적인 전역 상수는 원주율을 나타내는 PI값 이 값은 Math 클래스에 이미 정의 되어있다. System.out.println(Math.PI); 로 확인가능 2) 지역변수 = 스택프레임에 종속적임 1. 멀티스레드 멀티스레드의 T메모리 모델은 스택 영역을 "스레드 개수"만큼 분할해서 쓰는..
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요. 피자 문제와 유사한 문제이다. 서비스라는 개념이 있어서 특정 조건마다 증가값이 달라져야한다. Try 1) final int SERVICE = 10; final int GET_COUPON = 1; int chicken = 1081; int service_chicken = 0; int coupon = 0; int answer = 0; coupon = chicken / GET_COUPON;..
my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요. 문자열로된 수식이 주어지면 각 토큰별로 분석하여 실제 결과값을 출력하는 문제이다. 수식의 인자가 두 자리 수 일때는 토큰으로 인식하여 한자리수 연산밖에 하지 못하는 문제 발생할 수 있어 리스트나 배열로 바꾸어 처리해볼 수 있었다. Try 1) String my_string = "11 - 13"; int answer = 0; my_string = my_string.replaceAll(" " , ""); String cc = ""; char c; String[] temp = new String[2]; int k = 0; f..
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다. 두 번 이상 등장하는 문자를 제외한 문자를 "사전 순"으로 정렬해야하는 문제이다. 알파벳을 찾는 알고리즘이나, 특정 문자가 얼마나 등장하는지 최빈값을 찾는 문제에서 // 알파벳 개수만큼 배열을 만든다, 알파벳 위치에 해당하는 문자가 등장하면 인덱스를 1증가시킨다 int[] alphabet = new int[26]; 이처럼 미리 알파벳 크기만큼의 정수형 배열을 선언 후 풀이를 시작한다. 선언된 배열의 값들을 모두 0으로 초기화시키고, 등장하는 문자에 해당하는 인덱스를 카운트 시킨다. /..
머쓱이는 RPG게임을 하고 있습니다. 게임에는 up, down, left, right 방향키가 있으며 각 키를 누르면 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다. 예를 들어 [0,0]에서 up을 누른다면 캐릭터의 좌표는 [0, 1], down을 누른다면 [0, -1], left를 누른다면 [-1, 0], right를 누른다면 [1, 0]입니다. 머쓱이가 입력한 방향키의 배열 keyinput와 맵의 크기 board이 매개변수로 주어집니다. 캐릭터는 항상 [0,0]에서 시작할 때 키 입력이 모두 끝난 뒤에 캐릭터의 좌표 [x, y]를 return하도록 solution 함수를 완성해주세요. 이동로직을 자바 코드단에서 좌표계로 표현하는 과정이었다. Try 1) int[] answer = {0, 0}; i..
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요. 가까운 수라는 개념을 어떻게 구현해야할지 먼저 생각해보아야했다. 앞 뒤 값으로 n값과의 차이가 가장 적은 것을 구해야했다. Try 1) int answer = 0; // 초기값은 배열의 첫번째값 차이로 설정 int diff = Math.abs(array[0] - n); int target = 0; for(int i = 0; i Math.abs(array[i] - n)){ diff = Math.abs(array[i] - n); target = array[i]; } } answer =..