일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- LeetCode Remove Duplicates from Sorted List in c
- 스택
- 문자열
- 조합론
- 유클리드 호제법
- LeetCode 83 c언어
- 별 찍기
- 브루트포스 알고리즘
- 정수론
- 해시를 사용한 집합과 맵
- 다이나믹 프로그래밍
- 문자열제곱
- 수학
- 실패함수
- 큐
- 자료 구조
- 시뮬레이션
- 재귀
- 연결리스트 정렬
- 이분 탐색
- 구현
- 프로그래머스
- 큰 수 연산
- 사칙연산
- 연결리스트 중복제거
- 정렬
- 임의 정밀도 / 큰 수 연산
- KMP알고리즘
- LeetCode 83번
- Queue
- Today
- Total
목록코딩테스트 연습/백준(JAVA) (125)
hahn

2869번: 달팽이는 올라가고 싶다 (acmicpc.net) 문제를 보고 아주 쉬울줄 알았다... 근데 시간 제한이 있네?? 처음에 for문으로 접근했다가 그냥 식으로 될 거 같아서 아래 코드 나옴 답이 맞는지는 모르겠지만 테스트 케이스는 통과했을 듯? bufferedReader로 바꾸니 됐다

다른 사람들 어떤 규칙으로 풀었나 궁금해서 찾아봤다. 대각선을 그은 후 순서대로 n번째라고 가정한다. n이 증가함에 따라 칸의 개수는 1, 2, 3, 4... 순으로 늘어나고 분모 분자의 합은 n + 1을 의미한다고 한다. 왜 이걸 못 찾았을까 규칙 알았으니 이를 토대로 코드를 짰더니 위와 같이 나왔다. 한숨만 나온다.

더보기 import java.util.Scanner; class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int insertNumber = sc.nextInt() - 1, denominator = 1, numerator = 1, repeatCount = 0, repeatSentenceVariable = 0, check = 0; while(insertNumber > repeatCount) { repeatCount += (5 + (4 * repeatSentenceVariable++)); } loop: for(int i = 0; i < repeatSentenceVariable; i++) { denomin..

수열로 만들어서 풀면 할만한 문제 여기까진 그냥 할만하네 했다. so ez

손익분기점 구하는 문제 그냥 무난했다. 손익분기점이 뭘 의미하는지 알면 충분히 풀 수 있는 문제 가격과 비용이 똑같은 경우만 처리해주면 된다.

import java.util.Scanner; class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int insertWord = sc.nextInt(), answer = 0, strArrLength; String word; char compare; boolean check; String[] strArr; for(int i = 0; i < insertWord; i++){ check = true; word = "A" + sc.next() + "A"; for(int j = 0; j < 26; j++){ compare = (char) (97 + j); strArr = word.split(Character...

8. 다이얼 어떻게 할까 하다가 7, 9번은 4개씩 있어서 조건 처리하기 애매해서 6까지만 for 문 처리하고 따로 뺏다. 9. 크로아티아 알파벳 그냥 replaceAll 쓰는데 영향 없는 a로 바꿔서 length() 체크함. 10. 그룹 단어 체커 더보기 import java.util.Scanner; class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int insertWord = sc.nextInt(), answer = 0, strArrLength; String word; char compare; boolean check; String[] strArr; for(int i = 0; i < inse..

오늘 목표 달성했으니 그만할 거다. 1. 아스키 코드 갑자기 숫자로 문자 나타내라길래 당황했는데 hashCode 쓰면 될 거 같아서 해봤는데 됐다. 2. 숫자의 합 처음에 원래 이 방법대로 하다가 뭔가 길어질 거 같아서 숫자로 받는 걸로 방향을 틀었는데 25자릿 수 입력 때문에 int, long 둘 다 오류 떠서 다시 원점으로 돌아왔다. 근데 생각해 보니까 -48 해주면 될 거 같아서 해봤는데 됐다. 진작 이렇게 할걸... 역시 주제(내 주제 아님 문자열 말하는 거임)에 맞게 소스 짜야 한다. 3. 알파벳 찾기 위랑 같은 맥락 4. 문자열 반복 계속하면서 뭔가 변수가 늘어나는데 더 쉬운 방법이 있지 않을까 다른 사람 코드도 참고해야겠다. 5. 단어 공부 더보기 import java.util.Scanner..

1. 정수 N개의 합 문제가 길어서 뭐지 했는데 언어 별로 나눠둔 것 문제라고 올려둔 거 같지는 않다. 2. 셀프 넘버 셀프 넘버는 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의한다. 처음 문제를 읽고 와... 이걸 어떻게 식으로 만들지 하고 갑자기 난이도가 상승함에 난 진짜 아무것도 아니구나 싶었다.. 일단 내가 얻을 수 있는 힌트는 문제에서 100보다 작은 셀프 넘버와 이 출력 예제이다. 대충 보니 1의 자리 제외하고는 11이 더해진다는 것을 알 수 있었다. 그래서 어.. 쉽게 풀리겠는데 하고 제출 눌렀는데 어림도 없지 ㅋㅋㅋㅋ 그래서 뭐가 문제인지 찾아봤는데 출력 예제의 마지막 숫자를 보니 9997이 아닌 9993이 옳은 출력이라는 거다. 그래서 3자릿 수나 4자릿 ..

왜 안될까 곰곰이 생각을 해봤다. 반례를 알아봤어야 했는데 이미 주어진 것을 제외하고는 그나마 의미 있다고 생각된 게 첫 번째 와 마지막 숫자의 나머지가 일치하면? 이게 문제가 될 것 같았다. 그래서 테스트로 1 2 3 4 5 6 7 8 9 1을 넣어봤는데 역시 이게 문제였다. 코드를 다시 보니 if(arr[j] == -1){ result--; break; } 이 부분이 문제였던 거다 조건 처리를 j로 하게 해두니까 당연히 문제지 어휴.... 그래서 그냥 별생각 없이 직관적으로 이렇게 바꿔봤는데 이것도 안 되는 거다. 이것도 조금 생각해 보니 당연히 i + 1 해놓고 break 걸어두면 전체 비교를 하지 않는 걸 깨닫고 이렇게 수정하니 됐다. if문 두 개 걸어 둔 거는 boundsException 뜰 ..