본문 바로가기

기초 튼튼/코테준비

(12)
[코테준비] BOJ에서 입출력에서 readline()과 input()의 EOF 입력시 차이점 이슈: 각 언어별 EOF가 발생했을 때 어떻게 다루어야 하는지에 대한 궁금증 해결: BOJ 내 Q&A의 설명은 다음과 같다. 이 문제의 목적은 문자열을 올바르게 입력받고 파일의 끝(EOF)을 올바르게 판단하는 법을 연습하는 것입니다. 총 몇 줄이 주어진다 등의 정보는 절대 입력으로 주지 않습니다. 또한 단순히 키보드로 입력 내용만 적고 프로그램이 종료되지 않은 상태까지만 봐서는 EOF를 제대로 처리했는지 알 수 없습니다. 더 이상 읽을 게 없을 때 프로그램을 종료하는 법을 알아야 합니다. 그 방법은 언어마다 다르고 사용하는 함수마다 다르니, 구글에 "C언어 EOF" 와 같이 검색해서 그 방법을 알아보세요. 주로 파일 입출력으로 설명되어 있겠지만, 입력 스트림도 파일 입력이기 때문에 결국 동일합니다. 자바..
[코테준비] Java에서 BufferReader와 BufferWriter 활용 입출력 1. 언제 쓰이나? Java 교재나 자주 접하는 레퍼런스 코드들을 살펴보면 출력과 입력은 보통 System.out.println을 활용하거나 Scanner를 불러와서 인스턴스를 새로 만들어 입력받는 경우가 대부분이다. 코딩테스트 문제를 자바로 풀다보면 시간제한 초과로 안되는 경우가 존재하는데, 이 경우 BufferReader와 BufferWriter를 활용하여 문제를 해결 가능하다. Buffer를 활용한 두 메서드의 경우 조작 방법이 다소 초기에 번거로운 측면이 있지만 속도 측면에서는 훨씬 빠르다. 2. 어떻게 쓰나? import java.io.*; import java.util.*; public class Main{ public static void main (String[] args) throws I..
[코테준비] Python 해커랭크(HackerRank) 문제풀이 - 4 (2D Array) * 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 Python 문제 정리. 1. 문제 2차원 배열을 다루는 문제입니다. NxN로 구성되어있는 2차원 어레이에서 3x3 단위의 매트릭스 내의 숫자의 합 중 가장 큰 합을 반환하는 문제 정확히는 3x3 내의 [2,1] 위치의 벨류값과 [2,3] 위치의 벨류값을 제외한 값들의 합을 반환하는 문제입니다. 2. 정답 def hourglassSum(arr): width = len(arr[0]) - 2 length = len(arr[1]) - 2 maxSum = -9999 for i in range(0,width): for j in range(0,length): sumTemp = 0 for x in range(0,3): if x == 1: sum..
[코테준비] Python 해커랭크(HackerRank) 문제풀이 - 3 (Jumping on the Clouds) * 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 Python 문제 정리. 1. 문제 Thundervolt를 피해서 정상인 구름을 찾아서 가는 길의 이동횟수를 구하는 문제다. 2. 정답 def jumpingOnClouds(c): cnt = 0;temp=0; for index in range(0,len(c)-1): if temp == 1: temp=0 continue if index == len(c)-2 and c[index] == 0 and c[index+1] == 0: cnt+=1 break if c[index+1] == 0 and c[index+2] == 1: cnt+=1 else : cnt+=1 temp=1 return cnt 한 구름 위에서 앞의 두 구름에 대하여 맞닥뜨릴 ..
[코테준비] Python 해커랭크(HackerRank) 문제풀이 - 2 (Counting Valleys) * 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 Python 문제들 중 재미있는 문제들만 모아봤습니다. 1. 문제 Valleys를 몇번이나 내려갔다 왔는가를 카운팅하는 문제 Valleys를 오역하여 산맥으로 읽어서 헷갈렸던 문제다. 벨리는 협곡! 따라서 sea level이 마이너스로 내렸다가 0으로 올라오는 횟수를 카운팅 해주면 된다. '문제를 잘 이해하기'는 생각보다 더 중요한듯하다. 어제 읽었던 종만북에서 말했듯, 문제를 잘 푸는 첫 단계는 문제를 잘 이해하는 것이다. 2. 정답 def countingValleys(n, s): cnt = 0; altitude = 0; for isUpDown in s : if isUpDown is 'U': if altitude == -1: cn..
[코테준비] Python 해커랭크(HackerRank) 문제풀이 - 1 (Socks Merchant) * 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 Python 문제 정리. 1. 문제 주어진 양말들의 짝은 몇개인가? sort를 활용하여 풀 수 있었던 Easy 문제 이 문제는 어떤 분류에 속하는지를 모르겠다. 스스로 풀 수는 있었지만, 내 머리 속에 아직 각 문제별로 유형화가 덜 되어있어서 그런 것 같다. 문제를 좀 더 풀다가 한번 알고리즘/자료구조 개념정리를 하는 시간을 가져야겠다. 2. 정답 def sockMerchant(n, ar): temp = 0; cnt = 0; ar.sort() for i in range(0,n-1): if temp == 1 : temp = 0 continue if ar[i] == ar[i+1]: cnt += 1 temp = 1 return cnt S..
[코테준비] SQL 해커랭크(HackerRank) 문제풀이 - 피벗 - 6 * 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 SQL 문제 정리. 1. 문제 SQL 쿼리를 통해 피벗테이블을 구성하라는 문제이다. 주어진 테이블에는 각 직업별 사람의 이름과 그의 직업이 저장되어있다. 이를 통해 Doctor, Professor, Singer, Actor 순으로 피벗테이블을 작성하라는 문제 2. 정답 rowNumber를 저장하는 temp 테이블을 따로 만들고, 이를 grouping 해주어 출력해야 하는 문제 Medium 난이도 문제이지만 꽤나 까다롭다.. SQL에서의 변수설정법 (Ex; set @variable = n)을 통해 rownumber를 세팅해주어야 하고, 각 직업의 rowNum별 이름을 피벗테이블에 알맞게 이전 temp테이블에서 지정해주어야 하고 이름 ..
[코테준비] SQL 해커랭크(HackerRank) 문제풀이 - 직업정보 포메팅 - 5 * 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 SQL 문제 정리. 1. 문제 주어진 직업 테이블 (Occupations)에서 직업정보를 이름과 함께 문자 포멧팅하여 정렬하는 문제입니다. 2. 정답 문자열을 연결하는 명령어를 파악하여 조건에 맞게 포멧팅해줘야 합니다. 컴퓨터가 채점하기 때문에 띄어쓰기하나, 쉼표 하나도 틀리지 않게 정밀하게 포메팅해주어야 합니다. 제가 사용한 MySQL의 경우에는 concat을 통해 문자열을 결합할 수 있었습니다. Oracle 환경에서는 || 도 사용가능해서 처음부터 ||를 사용했다가 대차게 에러메시지로 까인.. ordered 조건도 정확하게 설정해주어야 합니다. 보통 order조건이 두번 이상 겹쳐서 해줘라는 조건들이 있는데 놓치기 쉬우니 세심하..
[코테준비] SQL 해커랭크(HackerRank) 문제풀이 - 삼각형 형태 알아내기 - 4 * 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 SQL 문제 정리. 1. 문제 주어진 세 변의 길이를 통해 (a,b,c) 삼각형의 타입을 알아내는 쿼리를 작성하는 문제입니다. 2. 정답 가장 먼저, 삼각형을 이룰 수 있는 조건을 갖추었는지 부터 필터링합니다. case when 문의 경우에는 순차적으로 조건을 진행하여 결정하기 때문에, 가장 상단의 조건이 해당 row의 Value를 가장 빨리 결정 짓습니다. 따라서, '삼각형이냐 아니냐?'에 대한 대답을 먼저 내릴 수 있어야 합니다. 그 후에는 심플합니다. 1) 세변이 모두 동일? --> 정삼각형 2) 두변이 동일? --> 이등변삼각형 3) 한변도 동일하지 않으면? --> 삼각형 으로 결정을 지어주는 쿼리를 when 조건 하에 리스..
[코테준비] SQL 해커랭크(HackerRank) 문제풀이 - 3 * 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 SQL 문제 정리. 1. 문제 City의 이름이 가장 짧은 것의 길이와, 가장 이름이 긴 것의 길이를 동시에 출력하는 문제입니다. 문제 링크 : https://www.hackerrank.com/challenges/weather-observation-station-5/problem?h_r=next-challenge&h_v=zen 2. 정답 CHAR_LENGTH() 함수를 알아야해서 약간 까다로운 문제였습니다. 구글링으로 검색을 해보면 Length()라는 함수도 존재하기 때문에, 둘 중 어떤 것을 써야하는지 고민이 됐습니다. Length()의 경우 Byte 단위로 반환을 해주지만, CHAR_LENGTH() 경우 글자 수 자체를 반환해주..