YD_S 개발로그
article thumbnail
Kotlin - 스코프 함수(run, let, apply, also, with)
Kotlin 2023. 7. 21. 11:48

스코프 함수란? 코드를 축약해서 표현할 수 있도록 도와주는 함수이며 영역 함수라고도 합니다. 사용법은 함수처럼 쓰지 않고 run, let처럼 괄호 없이 일종의 키워드같이 사용합니다. lateinit과 함께 Safe Call 남용을 막아주는 역할을 합니다. 스코프 함수에는 run, let, apply, also, with가 있습니다. this와 it으로 구분하기 this로 사용되는 스코프 함수 this로 사용되는 스코프 함수 : run, apply, with 클래스 내부의 함수를 사용하는 것돠 동일한 효과이기 때문에 this 생략 가능 호출 대상이 null일 경우 with는 스코프 함수이긴 하지만 확장(Extension) 함수가 아니기 때문에 일반 함수처럼 사용됩니다. 따라서 호출 대상이 null일 경우 ..

article thumbnail
백준 2292번 - 벌집
알고리즘 2023. 6. 23. 20:37

문제 접근방법 1 번째. 1 2 번째. 2~7 (1+6) 3 번째. 8~19 (7+12) 4 번째. 20~37 (19+18) 5 번째. 38~61 (37+24) 육각형이 점점 확대되는 것이므로 이전 갯수보다 6*(N-1) 만큼 증가되는 것을 확인할 수 있다. 그러므로 (누적된 값 + 6*(N-1))의 공식을 갖는다. 그렇기에 입력받은 값이 해당 범위 최대값 이내라면 N번째를 찾을 수 있다. 정답 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net

article thumbnail
백준 2745번 - 진법 변환
알고리즘 2023. 6. 23. 15:53

문제 접근방법 수 N을 CharArray로 받은 후 배열의 순서를 역으로 돌린다. 10진법 이상을 경우 CharArray의 원소가 ASCII 코드 값 65('A') 이상일 경우 원소 값을 ASCII 코드로 변환 후 55를 빼준다. pow함수를 이용해 N제곱을 하여 각 계산된 값을 더해준다. ASCII 코드 표 정답 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net

article thumbnail
백준 2563번 - 색종이
알고리즘 2023. 6. 23. 15:14

문제 접근방법 가로, 세로 크기가 각각 100이므로 2차원 배열 [100][100] 을 0으로 초기화 해준다. 주어진 좌표를 기준으로 행의 값을 [x][y] , [x][y+1], [x][y+2] .... [x][y+10] 을 1로 지정하고, 열의 값을 [x][y][x+1][y][x+2][y]....[x+10][y]의 값 또한 1로 지정한다. 그럴 경우 겹치는 사각형의 부분도 1로 지정되어 있으므로 배열의 값을 전부 조회하여 1의 갯수를 세면 넓이의 값을 구할 수 있다. 정답

article thumbnail
백준 1316번 - 그룹 단어 체커
알고리즘 2023. 6. 22. 18:43

문제 접근방법 입력된 문자열를 charArray로 받아 각 문자 별 중복되는 인덱스를 List에 넣어준다. 중복된 단어의 위치(List의 원소)와 해당 위치의 이전 위치(List의 원소 -1)이 다른 경우 중복되는 문자가 떨어져 나타난 것을 의미하므로 그룹 단어가 아님을 판별하고 전부 같을 경우 연속으로 나타나는 문자라 판별한다. 또한 중복된 인덱스가 없는 경우(List의 크기가 0일 때) 서로 다른 문자만이 나타난 것을 의미하므로 그룹 단어라 판별할 수 있다. 정답 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z,..

article thumbnail
백준 15552번 - 빠른 A+B
알고리즘 2023. 6. 20. 15:58

문제 접근방법 Java : Scanner.next(), System.out.println() Kotlin : readLine(), println() (java의 함수도 사용할 수 있다.) 위 언어 별로 각각의 입출력(I/O) 함수가 제공된다. 사용법은 간단하지만 해당 함수는 느린 입출력(Slow I/O)에 해당한다. 그렇기에 BufferedReader와 BufferedWrite를 사용하면 빠른 입출력(Fast I/O)을 할 수 있어 속도면에서 유리하다. Scanner는 왜 느릴까? Scanner의 버퍼는 1 KB를 갖고 있어 버퍼 사이즈가 작기 때문에 빈번히 버퍼를 비워줘야하는 반면 BufferedReader는 8 KB의 버퍼를 갖고 있어 버퍼에 담을 수 있는 입력값이 많습니다. 입력을 받을 때 정규식을..

article thumbnail
백준 11382번 - 꼬마 정민
알고리즘 2023. 6. 19. 13:49

문제 접근방법 해당 문제는 데이터 범위에 대한 이해도를 바탕으로한다. 입력받는 값을 int 자료형으로 받을 경우 int형의 범위보다 큰 수의 경우 Overflow가 발생한다. 그러므로 더 큰 정수형의 범위를 받는 long long 자료형을 사용해야한다. kotlin의 경우 long 자료형이 64bit인 long long 으로 설정되어 있으므로 long 자료형을 사용하면 된다. 유형 이름 바이트 값의 범위 sort 2 Byte -32,768 ~ 32,767 unsigned sort 4 Byte 0 ~ 65,535 int 4 Byte -2,147,483,648 ~ 2,147,483,647 unsigned int 4 Byte 0 ~ 4,294,967,295 long 4 Byte -2,147,483,648 ~..