알고리즘(23)
-
[백준] 3053 - 택시 기하학
www.acmicpc.net/problem/3053 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net 알고리즘 보다 수학적 지식만 알면되는 문제입니다. 유클리드 기하학이란,,, 아래 위키를 참고하세요! (백준 사이트 힌트란에 있습니다) 유클리드 기하학: 한국어 위키 영문 위키 Wolfram Mathworld 비유클리드 기하학: 한국어 위키 영문 위키 Wolfram Mathworld 택시 기하학: 한국어 위키 영문 위키 Wolfram Mathworld 택시 기하학은 비(非)유클리드 기하학인데요. 원의 넓이를 구할 때 정점에서 반지름 거..
2020.09.22 -
[백준] 2775 - 부녀회장이 될테야
#수학 앞서 푼 벌집과 위 문제는 규칙을 찾아서 주어진 값을 기준으로 앞으로 채울 값을 구해줘야 합니다. 따라서 규칙성을 찾는 비중이 문제해결에 크게 작용합니다. 해당 문제는 두 방식으로 풀 수 있습니다. 1) 2차원 배열 int[][]과 for문을 이용해서 array [int : 층][int : 호수]를 채워주는 경우, 2) 재귀 함수(Recursion)을 이용하는 방법입니다. 1. 2차원 배열과 for문 이용한 풀이 재귀 함수로 치면 기저식을 만들어줍니다. 0층에 사는 사람의 수는 1~14로 문제에서 주어졌기 때문에 people[0][i]를 1,2,3....,14로 채웁니다. 그리고 a층 b호의 세입자 수는 (a-1)층의 1호에서 b호까지 세입자 합과 같기 때문에 1호에 사는 사람은 고정 1명입니다...
2020.09.18 -
[백준] 2292 - 벌집
백준링크 : 바로가기 #수학 수학적 사고를 요구하는 문제들의 향연입니다. 스터디에서 [백준 문제 - 단계별로 풀어보기]를 순서대로 부수고 있는데 다다음주까지 수학과 재귀에 고통받을 것 같습니다. 벌집 문제의 난이도는 solved.at 기준 브론즈 2여서 수학적 규칙을 찾는 건 나름 괜찮습니다. 다만 로직으로 구현해내기가 생각보다 쉽지 않습니다. 외국에서 한국어로는 알겠는데 그 나라 말로 어떻게 표현해야 할지 모르는 상황과 유사합니다. 벌집 문제 규칙의 핵심은 벌집의 규모가 어떤 규칙을 가지고 커지는가 입니다. 저는 규칙을 찾을 때 손으로 종이에 쓰는 편입니다. 벌집이 커질 때마다 시작 숫자와 끝 숫자를 찾아 둘레의 크기(끝 숫자 - 시작 숫자 + 1)를 구하다보면 6의 배수로 증가함을 알 수 있습니다. ..
2020.09.14 -
[백준] 2941 - 크로아티아 알파벳
백준링크 : 바로가기 #String #StartsWith #substring 문제 풀이 배열과 반복문으론 풀 수 없었던 문제. 풀이를 보고서야 String 메서드 StartsWith을 사용해야함을 알 수 있었다. 문자열이 입력한 문자로 시작하면 true를 반환하는 boolean 타입 메서드다. 로직은 true로 반환됐을 때 substring으로 문자열을 잘라주었고, false의 경우 1글자만 substring으로 잘라줬다. 크로아티아 글자 수 count 변수 croCnt엔 한 번 돌 때마다 ++ 해줬다. 중첩 반복문을 사용했다. 처음엔 for문 2개를 썼지만 code의 길이가 일정하지 않기 때문에 조건을 넣을 수 있는 while문에 code.length > 0 을 stop 조건으로 뒀다. 기억하자 sub..
2020.09.10 -
[백준] 1316 - 그룹 단어 체커
백준링크 : 바로가기 #문자열 #배열 문자열 문제는 아스키 코드와 if문 로직을 활용해 풀 수 있었다. 로직을 짜는데 귀찮음이 있었지만 복잡하더라도 경우의 수를 하나씩 해결해가며 올리면 성공 확률에 근접하는 듯하다. 이번 문제는 푸는데 실패했던 크로아티아 알파벳 문제보다 고려할 경우의 수가 적었다. 그 문제는 단어 내 문자열 수가 다른 글자들이 몇 개 포함되어 있는지를 찾아야 돼서 문자열 수가 달랐던 점이 힘들었다. 그룹 단어 체커는 알파벳이 연속해서 나오기만 하면 된다. 대신 이미 나온 알파벳이 다른 알파벳의 뒤에 다시 나오면 안된다. 그룹 단어가 아니라는 뜻이다. 로직은 for문 3중첩을 이용했다. 최대 글자 수와 단어 수가 100개인 점을 감안했다. if문은 현재 charAt(i)와 다음 순서 ch..
2020.09.09 -
[백준] 11654 - 아스키 코드 변환
백준링크 : 바로가기 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net #문자열 #아스키 코드 아스키 코드 변환에 대한 개념을 정립할 수 있는 문제. char 문자가 숫자인지 문자인지 판별하는 Character.isDigit 클래스 메서드는 덤. 아스키 코드 7비트로 표현한 정보교환용 부호체계. 총 128개의 부호가 사용된다. 2바이트 이상의 코드를 표현 못하기 때문에 유니코드(UTF-8)가 현재 국제표준 위상을 가지고 있다. Dec 컬럼이 10진수로 나타낸 숫자이고, Char 컬럼이 부호(아스키 코드)이다. Java에서의 아스키 코드 문자 to 숫자, 숫자 to 문자 1) 숫..
2020.09.02