[BOJ] 백준 11328번 Strfry - 배열

ho's·2022년 4월 11일
0
post-custom-banner

https://www.acmicpc.net/problem/11328


위의 문제이다.

1. 몇 개의 경우를 검사할 것인지 입력받는다.

2. 한개의 케이스마다 2개의 문자열을 입력한다.

3. 문자열1과 문자열2가 순서를 바꾸어 일치한다면 Possible, 일치하지 않는다면 Impossible을 출력한다.


문제를 풀기전에 알아야할 것

  • nextline()과 next() 의 차이점

nextline()은 문자 또는 문장 한 라인 전체를 입력받는다.
next()는 문자 또는 문자열을 공백을 기준으로 한 단어 또는 한 문자씩 입력 받는다.

  • toCharArray()

공식 문서를 찾아보자. toCharArray()는 String클래스에 있는 메소드로,
String을 새로운 char배열로 반환한다고 되어 있다.

  • 삼항연산자

삼항연산자란 if() else를 한곳에 모아 두어서 사용하는 방식이다. if(), else만 이용해서 개발할 일이 있다면 삼항연산자를 이용하면 코드가 더 간결해진다.

결과 타입 = (조건문)? true : false;

  • 아스키코드

문제에서 문자열은 소문자만을 입력받는다는 조건이 있다.


사실 문제를 풀다가 풀리지 않아 검색을 하고 이해하려는 쪽으로 해결했다.

코드를 보면서 모르는 문법을 위에 정리했다.

https://dalconbox.tistory.com/135
위 블로그님의 코드를 해석하는 글이 될 것 같다.

코드를 보자!

  • line7 : Scanner 객체를 생성한다.
  • line8 : 케이스의 갯수를 입력받는다.
  • line9 : 케이스의 갯수만큼 for문을 이용해 반복해준다.
  • line10: 문제에서 정의된 소문자의 알파벳의 갯수는 26개 이므로, 26개의 int배열을 생성한다.
  • line11: boolean 타입의 check변수를 만들고 기본값을 true로 해준다.
  • line12,13 : char배열을 next().charArray();를 이용해 2개 만들어 준다.
  • line14,15 : alpha 배열은 기본값이 0이기 때문에,
    향상된 for문을 이용해 words1의 배열을 char타입의 배열 c에 담는다(words1의 크기만큼)
  • alpha[c- 97] 은 소문자a의 아스키코드의 값이 97이기 때문에 0~25까지의 aplpha배열에 순서대로 알파벳을 담을 수 있다.
  • line16 : 향상된 for문을 이용해 int자료형의 alpha의 배열의 크기만큼 반복해서 j배열에 담게된다. 그 후, aplha의 크기만큼 반복해서 값이 0이 아닌 경우, false를 반환한다.
  • line18: 만약 check가 true이면 "Possible" false이면 "Impossible"을 출력한다.
profile
그래야만 한다
post-custom-banner

0개의 댓글