parksw125268   2년 전

메모리 초과뜨는데 무엇이 문제인지 봐주세요! ㅠ

프로세스 간단 정리

1. arr1 에 알파벳 A~Z가 각각 몇번쓰였는지를 저장

2. arr1에 최대값을 구해서 가장 많이 쓴 알파벳이 무엇인지 구함.

3. 최대값이 한개밖에 없는지 두개이상인지 구함.

3. 한개면 해당 알파벳을 출력하고 두개이상이면 "?"출력

zigui   2년 전

15번째 줄의 substring 메소드에서 매번 새로운 object를 만들어 메모리 초과가 나는 것 같습니다.

15번째 줄을 값 참조만을 사용하는 메소드로 바꾸면 해결될 것 같습니다.

parksw125268   2년 전

for (i in 0..s.length-1){
    for (j in 0..25){
        if (s.get(i).toString().toUpperCase().equals(('A'+j).toString()))
            arr1[j]++
    }
}
이렇게 수정햇는데도 메모리 초과라고 나오네요.ㅠㅠㅠ

zigui   2년 전

이렇게 바꾸면 됩니다. 제 생각에는 toString()이 메모리를 사용하는 것 같아 보입니다.

parksw125268   2년 전

감사합니다! 잘 되네요!

댓글을 작성하려면 로그인해야 합니다.