728x90

주어진 2진수 문자열 2개를 더한 값을 2진수로 반환 

 

1. 2진수를 10진수로 변환하여 더한 후 2진수로 변환하여 반환

public String solution(String bin1, String bin2) {

String answer = "";

int sum=Integer.parseInt(bin1,2)+Integer.parseInt(bin2,2);

answer=Integer.toBinaryString(sum);

return answer;

}

Integer 클래스에서 문자열을 정수로 바꾸어주는 parseInt를 활용

parseInt("숫자문자열",2); 

두번째 파라메터는 변환할 진수를 나타낸다. 2진수로 변환하기 위해 2 입력

 

 Integer 클래스에 toBinaryString() 메서드는 10진수를 2진수로 변환 

 

++

toOctalString() 은 8진수로 

toHexaString() 은 16진수로 변환한다. 

'Java > Coding Test' 카테고리의 다른 글

안전지대 문제풀이  (0) 2023.09.17
겹치는 선분의 길이 문제풀이  (0) 2023.09.17
한번만 등장한 문자 문제풀이  (0) 2023.09.17
등수 매기기 문제풀이  (0) 2023.09.15
삼각형의 완성조건(2) 문제풀이  (0) 2023.09.15
728x90

주어진 문자열에서 한번만 등장한 문자를 모아 사전순으로 배열한 문자열을 반환 

 

1. map으로 문자열이 가진 문자들의 개수를 구해서 개수가 1인 것만 정렬하여 반환

 

public String solution2(String s) {

String answer="";

char[] chars = s.toCharArray();

Map<Character, Integer> charMap = new HashMap<Character, Integer>();

for(char c : chars){

charMap.put(c, charMap.getOrDefault(c, 0) +1);

}

 

for(char c : charMap.keySet()){

if( charMap.get(c) == 1){

answer+=c;

}

}

char[] ca = answer.toCharArray();

Arrays.sort(ca);

return new String(ca);

}

 

2. replaceAll() 메서드를 사용했을 때 변화한 길이가 1인 것만 정렬하여 반환

 

public String solution(String s) {

String answer = "";

for(int i=0; i<s.length();i++) {

int fLen = s.length();

char c = s.charAt(i);

s=s.replaceAll(s.charAt(i)+"", "");

if(fLen-s.length()==1) {

answer+=c;

}

i--;

}

char[] ca=answer.toCharArray();

Arrays.sort(ca);

answer=String.valueOf(ca);

return answer;

}

문자의 개수를 알기위해 replaceAll()를 사용하면 당시 개수를 알려한 문자도 같이 ""로 변환되기 때문에 i는 증가하고 배열은 감소하여 모든 index를 검사하지 못한다. 

다시 i--를 감소시켜줘야 한다. 

 

3. 다른 사람의 풀이에 좋은 풀이가 있었다.

public String solution3(String s) {

int[] alpha = new int[26];

for (char c : s.toCharArray()) {

alpha[c - 'a']++;

}

 

StringBuilder answer = new StringBuilder();

for (int i = 0; i < 26; i++) {

if (alpha[i] == 1) {

answer.append((char) (i + 'a'));

}

}

return answer.toString();

}

알파벳 a를 0번, z를 25번으로 하는 int 배열을 만들고 

문자열에 등장하는 문자를 찾아 해당 인덱스에 값을 1씩 증가시킨다. 

배열중 1을 원소로 하는 인덱스는 한번만 등장하는 문자로 

문자에 'a' 값을 더해줘 실제 알파벳으로 변환해준다. 

'Java > Coding Test' 카테고리의 다른 글

겹치는 선분의 길이 문제풀이  (0) 2023.09.17
이진수 더하기 문제풀이  (0) 2023.09.17
등수 매기기 문제풀이  (0) 2023.09.15
삼각형의 완성조건(2) 문제풀이  (0) 2023.09.15
영어가 싫어요 문제풀이  (0) 2023.09.14
728x90

수학, 영어 점수가 배열로 주어질때 평균으로 등수를 순서대로 반환한 배열

public int[] solution(int[][] score) {

int[] answer = new int[score.length];

for(int i=0;i<score.length;i++){

    for(int j=0; j<score.length;j++){

         if(score[i][0]+score[i][1]<score[j][0]+score[j][1]){

    answer[i]++;

    }

}

answer[i]++;

}

return answer;

}

 이중for문으로 i번째학생의 총점보다  더 큰 학생을 만나면 rank 1증가  

 answer 원소 값은 0으로 초기화 되기 때문에 마지막 최고 rank가 1에서 시작하므로 1씩 증가 

 i와 j의 총점이 같은 경우도 rank를 증가시키면   동점자가 모두 등수가 내려간다.

 

public int[] solution2(int[][] score) {

List<Integer> scoreList = new ArrayList<>();

for(int[] t : score){

scoreList.add(t[0] + t[1]);

}

scoreList.sort(Comparator.reverseOrder());

 

int[] answer = new int[score.length];

for(int i=0; i<score.length; i++){

answer[i] = scoreList.indexOf(score[i][0] + score[i][1])+1;

}

return answer;

}

점수를 ArrayList에 넣고 ArrayList를 정렬하면 

index+1이 등수가 된다. 

1번 학생의 총점부터 indexOf 메서드로 인덱스를 알아내면 랭킹을 구할 수 있다.   

'Java > Coding Test' 카테고리의 다른 글

이진수 더하기 문제풀이  (0) 2023.09.17
한번만 등장한 문자 문제풀이  (0) 2023.09.17
삼각형의 완성조건(2) 문제풀이  (0) 2023.09.15
영어가 싫어요 문제풀이  (0) 2023.09.14
공 던지기 문제풀이  (0) 2023.09.14
728x90

삼각형의 조건: 가장 긴 변의 길이가 나머지 변의 합 보다 작아야 한다.       

두 변의길이가 주어질 때 가능한 나머지 변의 길이의 개수는?   

 

public int solution(int[] sides) {

int answer = 0;

//1.최대 sides[0]+sides[1]보다 작아야한다.

//2.sides중 최댓값이 나머지 값과 더할 값의 합보다 작아야 한다.

int max = Math.max(sides[0], sides[1]);

int min = Math.min(sides[0], sides[1]);

int sum = sides[0]+sides[1];

//answer>max-min;

//max-min=Math.abs(sides[0]-sides[1]);

//answer>Math.abs(sides[0]-sides[1]);

//answer<sides[0]+sides[1];

answer = sides[0]+sides[1]-Math.abs(sides[0]-sides[1])-1;

return answer;

}

'Java > Coding Test' 카테고리의 다른 글

한번만 등장한 문자 문제풀이  (0) 2023.09.17
등수 매기기 문제풀이  (0) 2023.09.15
영어가 싫어요 문제풀이  (0) 2023.09.14
공 던지기 문제풀이  (0) 2023.09.14
숨어있는 숫자 덧셈(2) 문제풀이  (0) 2023.09.13

+ Recent posts