본문 바로가기

코딩

(6)
[JAVA] split과 regex를 활용해 문자열 뽀개기 어떤 사정으로 인해 String을 문자와 숫자로 나눠보려는 마음에 여러 시도를 해보았으나 잘 되지않아 구글신님의 도움을 빌렸다. 그분께 신탁을 맡겨본 결과 split과 regex(정규표현식)을 통해 손쉽게 문자열을 뽀갤 수 있다는 사실을 알았다. 우선 String input에 입력할 문자열을 입력하고, 이를 나눈 문자열을 저장하는 문자열 배열 String part[] 를 선언해둔다. 그리고 저장하려는 문자열 배열에 아래와 같이 작성해주면 본래 의도대로는 아니었으나, 기존 목표였던 숫자만을 선별해 저장하는데는 성공할 수 있었다. 이제 뽀갠 문자열을 필요에 맞게 사용하면 된다. 반대로 문자열만을 선별하자면 정규표현식을 또 요리조리 만져야만 하겠다. 아직 정규 표현식을 제대로 이해하고 활용하기는 좀 어렵다는 ..
[JAVA] double과 int 간의 형변환을 항상 주의할 것. 백준문제 4344번을 진행하면서 출력을 소숫자리까지 해야하기 때문에 double 배열을 사용하였는데 알고리즘은 문제 없는 것 같은데 0.000%로 출력이 되어 확인을 해보니 평균을 넘는 학생 수인 count와 student가 int형 변수였고, 이에 double형 배열에 값이 들어가지 않은 것이다. 수정 이후엔 올바르게 출력 되었으며 반올림 및 소숫자리 출력을 위해 String.format("형식", 변수) 를 사용하였다. string 변수에 String.format("%.3f", rate[i]) 를 넣어준 후 그대로 sout으로 %를 달아 출력해주면 된다. 번외로 입력받은 수를 거꾸로 돌린 뒤 출력하는 문제가 있었는데, 여기서도 요즘 자주 애용하는 toCharArray를 사용해줬는데, char에 저장된..
[JAVA] 문장을 글자별로 추출하고 싶을 때, String 배열을 char 배열로 바꿔보자 백준 문제 8958번을 해결하면서 처음엔 String Tokenizer로 해결하려다 다 붙어있는 문장을 글자단위로 떼어내기가 어려웠고 검색을 통해 String 배열을 Char 배열로 바꾸는 법을 알았다. 덕분에 해결. 입력 예시 5OOXXOXXOOOOOXXOOXXOOOXOXOXOXOXOXOXOOOOOOOOOOOOOOXOOOOXOOOOX 출력 예시 10975530 char[] strToChar = input[i].toCharArray() 가 핵심. 그리고 개별 문장은 잘 처리가 되는데 한번에 하니까 자꾸 결과가 이상하게 나와서 보니까 초기화를 제대로 못해준 곳이 있었다. 변수 초기화 항상 신경쓸것. 문제 : https://www.acmicpc.net/problem/8958 참조 : http://jyosss..
[Codility] Distinct - 특정 배열에 포함된 모든 숫자의 종류 수 구하기 주어진 배열을 읽어 배열을 구성하고 있는 정수의 개수를 구해 return 하는것이 문제이다. 배열을 읽으면서 선언해 준 ArrayList에 동일한 원소가 있는지 검사, 없으면 add로 추가. 최종으로 원소를 추가한 ArrayList의 최종 사이즈를 size()로 return 하면 완료. 아래 코드 부문은 inteliJ에서의 실행, 출력을 위해 코딜리티 코드와 다른 부분이 있음. 시간복잡도는 O(N**2). 언제쯤 Performance까지 점수를 딸 수 있는 코드를 짤 수 있을지..
[Codility] LongestPassword - java.util.regex 를 활용해 조건을 만족하는 문자열 걸러내기 코딜리티에서 Indeed Prime 2015 Challenge 항목에 포함된 Task이다. 문제는 주어진 문자열에서 띄어쓰기로 분간된 암호들 중 주어진 조건을 만족하는 가장 긴 암호의 길이를 return하는 것이다. 암호의 조건은 숫자를 무조건 포함하며 홀수 개의 숫자만을 가지고, 짝수 개의 문자만을 가질 수 있다. 입력 된 문자열에서 유효한 암호가 존재하지 않을 때에는 -1을 return 해주어야 한다. InteliJ에서 실행 및 출력을 위해 직접 문자열을 정의해주었고 return 값을 return하지 않고 sout으로 출력하도록 하였다. 처음에 아 드디어 됬다고 하다가 점수가 10점밖에 안나와서 뭐가 문제일까 하다가.. 문자와 숫자에 걸린 홀수개 혹은 짝수개의 조건이 있던 것을 나중에 알았다. 여기에..
[안드로이드] ArrayList에서 contains() 가 객체를 발견하지 못할때, equals를 Overide 하자. 문제는 무엇이였나면 Food 라는 유형의 객체를 담는 ArrayList에 a라는 객체를 추가하고 다시 내용이 같은 a라는 객체를 추가하려할때 방지하고 감지할수 있도록 하려 햇는데 기존 contains() 메소드로는 있는 객체를 항상 감지하지 못하고 똑같은 객체 a를 다시 추가하는 경우가 있어 열심히 뒤졌더니 해결책이 있었다. Food 클래스 내부에 equals(Object object) 를 Override 하여 Food 클래스 안에서 비교하고 싶은 값을 아래처럼 지정해주면 (나같은 경우에는 Food 클래스의 name 값이 같으면 같은 자료라고 보게 했다.) contains() 를 해주어도 조건에 해당하는 객체가 있으면 true 값을 리턴하여준다. @Override public boolean equals(..