작성
·
205
0
자바에서 제공하는 함수를 최대한 배제하고 풀어보려 했는데 코드가 엄청 길어지고 문제 검사에서도 런타임 에러가 뜨네요.. 어떤 방향으로 공부하는게 좋을까요 선생님? 조언 부탁드립니다..
import java.util.Arrays;
import java.util.Scanner;
import java.util.Set;
public class Main {
public int square(int p) {
int i=0;
int result = 1;
while(i < p) {
result *= 2;
i++;
}
return result;
}
public String solution(String k ) {
char a[] = k.toCharArray();
int b[] = new int[k.length()];
String word = "";
for( int i =0; i < k.length(); i++) {
if(a[i] == '#') {
b[i] = 1;
}else if(a[i] == '*') {
b[i] = 0;
}
}
int count =0;
int num = 0;
while(count < k.length()) {
if(6 -(count%7) == 0) {
num += b[count] * 1;
}else {
num += square(6-(count % 7)) * b[count];
}
if(count!=0 && (count % 7) == 6) {
word += (char) num;
num = 0;
}
count ++;
}
return word;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int number = kb.nextInt();
String str;
do {
str = kb.nextLine();
}while(str.length()!= number*7);
System.out.println(T.solution(str));
}
}
답변 2
2
컴파일이 안되서 실행이 안되는건 문법이 잘못되었거나 코드가 잘못된겁니다.
컴파일 에러문 잘 읽어보시면 어디서 왜 오류가 났는지 알려주니까 잘 찾아가서 고쳐주시면 되구요.
자바에서 제공하는 함수를 왜 배제하셨는지는 모르겠지만 이용하셔도 됩니다.
코딩테스트에서도 기본 함수는 다 쓸수 있어요.
혹시 취준생이시라면, 면접에서 기본함수를 물어보지도 않구요..
IDE 쓰시면 요즘 다 밑줄같은게 나와서 이거 잘못됬다고 고쳐야 한다고 빨간줄로 나오거나
노란줄이나 회색줄로 고치는게 좋다고 경고를 줍니다.
char a[] = k.toCharArray();
int b[] = new int[k.length()];
일단 이부분이 잘못된거같네요.
타입이 안맞다고 할거같습니다. (그리고 c언어 스타일로 변수선언 하신거 같네요)
특정 타입으로만 된 배열을 만들고 싶으시면
List<Char> charArray = k.toCharArray();
로 리스트에 제네릭을 이용하면 됩니다.
자료구조들은 보통 Collection 이라는 함수를 언어별로 제공하니 java collection 이런식으로 검색해보세요.
공부하시느라 많이 힘드실텐데 화이팅 하세요 ^^
0
좋은 답변 너무 감사드립니다!
제가 런타임 에러를 컴파일 에러라고 잘 못 말씀드렷습니다. 이클립스에서는 잘 실행이 되는데 채점사이트에서는 런타임 에러가 떠서 이런경우에는 제 코드가 과하게 길기 때문에 그런건지 궁금해서 질문 드렸습니다. 그리고 한가지 더 질문을 드리면 제가 코딩테스트를 준비중에 있는데 거기서는 웹 서칭은 불가능하다고 해서, 자바에서 제공하는 함수의 어디까지를 숙지해 가야하는지 감이 잡히지 않는데 조언 부탁드려도 될까요?
Collection에 대한 설명 너무 감사드립니다.
코테문제 풀면서 자주쓰는 것들 import 문 외워서
아래처럼 하면되지않을까 싶습니다만..