일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다이나믹 프로그래밍
- 백준단계별로풀어보기
- 자바개념
- 백준
- BFS
- 브루트포스
- 알고리즘공부
- ★
- dp
- 백트래킹
- 빅오 표기법
- 개발공부
- 백준자바
- 자바의정석연습문제풀이
- java
- Java개념
- 무료코딩강의
- 알고리즘
- 자바
- dfs
- 자바의정석연습문제
- 시간 복잡도
- ☆
- 자바공부
- 백준알고리즘
- 백준9단계
- 자바의정석
- 동적계획법
- 무료개발강의
- 코딩공부
- Today
- Total
더 많이 실패하기
백준 2292번 벌집 자바 / 백준 단계별로 풀어보기 7단계 / 7. 기본 수학 1 본문
백준 7단계 2번 문제 - 2292 벌집
https://www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
7. 기본 수학 1
(2) 백준 2292번 문제
벌집
문제

과정 생각해보기

이렇게 한줄당 숫자의 개수가 6씩 늘어나는 것을 볼 수 있다
개수 구하는 공식은 개수 = 끝수 - 첫번째수 + 1
2부터 시작해서 6개씩은 2개 → 끝수 - 2 + 1 = 6(6*1(count)) → 끝수 = 6 + 1 = 7
그 끝수부터 12개씩은 3개 → 끝수 - 7 - 1 + 1 = 12(6*2) → 끝수 = 12 + 7 = 19
그 끝수부터 18개씩은 4개 → 끝수 - 19 -1 + 1 = 18(6*3) → 끝수 = 18 + 19 = 37
우리가 구하고 싶은 답은 count + 1
또한 끝수들은 6의 배수씩 차이난다
라고 보면 된다
오답


배열 크기는 어떻게 해야할지 몰라서 당연히 저것보단 적겠지만 문제에서의 최대수를 입력했다
위같은 코드를 쓰면 아래와 같은 계산 방식을 거쳐 도출할 수 있을 것 같은데,
if문에서 <= 를 쓸 수 없다며 The operator <= is undefined for the argument type(s) boolean, int 오류가 떴다

너무 값이 크다는 오류도 뜨길래 임의로 배열 크기의 자리수만 하나 적게 넣어주고;
n과의 크기 비교도 항을 나누어 적어줬는데 이러면 답이 이상하게 나온다
백준에는 시간초과나 메모리초과가 뜬다
정답 인정 코드

찾은 규칙은 같은데 식을 간략화하는 게 아직 어렵다
이게 알고리즘의 핵심일텐데..~!
직후 백지 복습

'알고리즘 > 백준' 카테고리의 다른 글
백준 2869번 달팽이는 올라가고 싶다 / 백준 단계별로 풀어보기 7단계 / 7. 기본 수학 1 (0) | 2022.09.11 |
---|---|
백준 1193번 분수 자바 / 백준 단계별로 풀어보기 7단계 / 7. 기본 수학 1 (0) | 2022.09.11 |
백준 1712번 손익분기점 자바 / 백준 단계별로 풀어보기 자바 7단계 / 7. 기본 수학 1 :개발 공부 41일차 (0) | 2022.09.10 |
백준 1316번 그룹 단어 체커 자바 / 백준 단계별로 풀어보기 자바 6단계 / 6. 문자열(6) :개발 공부 40일차(1) (0) | 2022.09.09 |
백준 2941번 크로아티아 알파벳 자바 / 백준 단계별로 풀어보기 자바 6단계 / 6. 문자열(5) :개발 공부 39일차(2) (0) | 2022.09.08 |