class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
for(int i=0; i < answer.length; i++){
answer[i] = numbers[i]* 2;
}
return answer;
}
}
알고리즘은 완성 하였으나 int[] answer배열의 동적 할당에서 막혀 검색으로 알아보았다.
int[] answer = new int[numbers.length];
이 방법으로 인풋을 담당하는 numbers 배열의 길이만큼 동적할당을 하도록 함
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
int answer = 0;
Arrays.sort(array);
double a = array.length/2;
int b = (int) Math.ceil(a);
answer = array[b];
return answer;
}
}
배열의 중앙값을 솎아내는건 풀었지만 간단히 오름,내림차순하는 방법을 몰라 검색했다.
import java.util.Arrays;
Arrays.sort(array);
import하고 Arrays.sort(배열명) 으로 간단하게 오름차순 정렬 후 문제를 풀었다.
코드를 입력하세요
class Solution {
public int[] solution(int n) {
int[] answer;
int k = 0;
if(n % 2 ==0){
answer = new int[n/2];
}else{
answer = new int[n/2+1];
}
for(int i = 0; i <= n; i++){
if(i % 2 != 0){
answer[k] = i;
k++;
}
}
return answer;
}
}
이번에도 배열의 길이 할당에서 막혔다.
답에서는 배열의 길이가 주어지는 n값이 짝수면 n/2개, 홀수면 n/2+1개라는 구문을 if문으로 풀어냈다.
ex) n = 10일때, 배열의 길이는 n/2 = [5]로 할당. "1,3,5,7,9"
n = 11일때, 배열의 길이는 n/2+1 = [6]로 할당. "1,3,5,7,9,11"
배열 길이를 할당 한 다음에는
for문으로 i가 1씩 n까지 증가하며 홀수를 검사한다.
홀수일때 answer[k]에 해당 i를 저장한다.
처음에 answer[i]로 했다가 에러를 띄웠는데 지금생각해보니 당연한듯.
i가 배열의 크기 이상까지 갈 예정인데 주소와 i값을 동일시 생각한게 잘못
어찌보면 당연하지만 모를땐 한없이 어려운듯, 배열에 많이 약한거같다.
내가 쓴 풀이
class Solution {
public int solution(int n, int k) {
int answer = 0;
if(n >= 10){
if(k >= n/10) {
k -= n/10;
} //서비스적용
}
answer = (12000 * n) + (2000*k);
return answer;
}
}
매우 간단한 풀이. 참고해도 좋을 것 같다
class Solution {
public int solution(int n, int k) {
return n * 12000 + k * 2000 - (n / 10 * 2000);
}
}
내가 쓴 풀이
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
for(int i = 0; i < array.length; i++){
if(array[i] == n){
answer++;
}
}
return answer;
}
}
다른 사람의 풀이
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
for (int num : array) {
if (num == n) answer++;
}
return answer;
}
}
배열을 다룰때 향상된for문을 사용하는 것이 가독성부분에서 좋은 판단인거같다.
class Solution {
public int solution(int[] array, int height) {
int answer = 0;
for(int num : array ){
if(num > height) answer++;
}
return answer;
}
}
향상된 for문으로 문제를 풀어보았다.
class Solution {
public double solution(int[] numbers) {
double answer = 0;
int n = 0;
for(int i : numbers){
answer += i;
n++;
}
return answer /= n;
}
}
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[num_list.length];
int k = 0;
for(int i = num_list.length-1; i>=0; i-- ){
answer[k] = num_list[i];
k++;
}
return answer;
}
}
class Solution {
public int solution(int[] dot) {
int answer = 0;
int x = dot[0];
int y = dot[1];
if(x>=0 && y >=0 ) answer = 1;
else if(x<0 && y >=0) answer = 2;
else if(x<0 && y <0) answer = 3;
else if(x>=0 && y <0) answer = 4;
return answer;
}
}
최대한 있는 그대로를 if문에 녹여내 봤다. 더 간단하게 짤 수 있다
public int solution(int n) {
int answer = 1; //피자한판
int pizza = 7; //판당 조각수
while(true){
if(pizza*answer >= n) break;
else if(pizza*answer <= n) answer++;
}
return answer;
}
while반복문으로 루프를 걸어놓고 피자7조각x판수가 사람인원보다 작으면 판수를 추가하도록 if문을 만들었다.
public int[] solution(int[] num_list) {
int[] answer = new int[2];
for(int i : num_list){
if(i % 2 == 0) answer[0]++;
else answer[1]++;
}
return answer;
}
배열 문법만 알아도 풀수있는 문제
class Solution {
public int[] solution(String[] strlist) {
int[] answer = new int[strlist.length];
for(int i = 0; i < strlist.length; i++){
answer[i] = strlist[i].length();
}
return answer;
}
}
length뒤의 괄호 유무를 신경써야함
class Solution {
public int solution(String message) {
int answer = 0;
return answer = message.length()*2;
}
}
class Solution {
public int[] solution(int money) {
int[] answer = new int[2];
answer[1] = money;
while(5500 <= answer[1]){
answer[1] -= 5500;
answer[0]++;
}
return answer;
}
}
반복문을 들어가기 전 돈을 잔돈에 저장해서 하나로 굴렸다.