링크 : https://www.acmicpc.net/problem/11718 문제 소요시간: 실패 설계하기(접근방법) 1. 문자를 입력받고 출력한다. (실패) --> 이 문제의 핵심은 공백으로 끝나지 않는다는 점이다. 즉 언제가 입력의 끝인지 알지 못한다 따라서 다음과 같은 코드를 사용해야 한다. try: (예외가 발생할 수 있는 코드) except: (예외가 발생했을 때 실행할 코드) 그리고 이 except에 지정해주어야할 예외는 EOFError(End of File)에러 -> 더이상 값을 읽을 데이터가 없을 경우 나타나는 에러이다. 코드(출력) while True: try: print(input()) except EOFError: break 얻어갈 부분 1. try except 구문의 사용법을 알게되..
링크 : https://www.acmicpc.net/problem/10870 문제 소요시간: 5분 12초 설계하기(접근방법) 1. n을 입력받는다 2. result, n_1, n_2 변수를 3개 선언한다. 3. result = n_1+n_2 형태로 피보나치 수열을 구한 후 다음 반복문에서 n_2= n_1이되고 (아래 식과 순서가 바뀌지 않게 주의해야 한다) n_1 = result가 된다 본문에서 0번째부터 수열을 구하니 range는 n-1로 한다(0,1번째는 주어졌고 2번째부터 피보나치 수열을 시작한다. 즉 2번째가 반복문에서는 첫번째 순회가 되어야하므로 range의 범위를 n-1로 한다) 예외 사항인 0번째와 1번째는 if문으로 따로 처리한다. 4. 결과를 출력한다. 코드(출력) n = int(inpu..
링크 : https://www.acmicpc.net/problem/7568 문제 소요시간: 14분 20초 설계하기(접근방법) 1. 사람의 수를 입력받고, 각각의 키 몸무게를 리스트로 입력받는다. 2. 리스트의 첫번째 원소의 [0]과 [1] 즉 키와 몸무게를 다음 사람의 키와 몸무게를 비교한다 for문을 순회하며 만약 키와 몸무게가 둘 다 작다면 순위(cnt) += 1을 해준다. 3. 순회하며 순위를 출력한다. 코드(출력) import sys input = sys.stdin.readline n = int(input()) dlist = [] for i in range(n): dlist.append(list(map(int, input().split()))) for i in range(len(dlist)): #..
링크 : https://www.acmicpc.net/problem/20546 문제소요시간: 74분 9초(코드 구현 24분, 디버깅 50분), 재코딩 10분설계하기(접근방법) 1. 현금을 입력받는다.2. 날짜별 주가 리스트를 입력받는다.3. 준현의 경우 돈이 바닥날때까지 매수한다4. 성민의 경우 3일연속 상승하는지, 하락하는지 검사를 하고상승 : 자산에 매도한 주식 수 * 현재 주가 더한다.하락 : 주식 수 += 가진 자산으로 전부 매수, 남은 자산 = 매도하고 남은 나머지5. 각각 자산을 비교하여 결과를 출력한다. 코드(출력)def junhyun(m, price_list): stock = 0 for i in price_list: stock += m // i m %= i..
링크 : https://www.acmicpc.net/problem/21918 문제 소요시간: 13분 40초 설계하기(접근방법) 1. 각각의 케이스를 입력받는다. 2. 명령어를 구현하고, 가독성 좋게 각각 메서드로 선언한다. 문제에 나온 n번째는 리스트에서 n번째가 아닌 n-1번째이기 때문에 이 점들을 주위하여 코드를 작성한다, 3. 각각의 명령어에 맞게 수행을 한 후 array를 초기화해준다. 4. 마지막 전구의 상태를 출력한다 코드(출력) def order1(array, i, x): array[i - 1] = x return array def order2(array, l, r): for i in range(l-1, r): if (array[i] == 1): array[i] = 0 else: array[..
링크 : https://www.acmicpc.net/problem/1439 문제 소요시간: 18분 49초 설계하기(접근방 법) 1. 문자를 입력받는다. 2. 알고리즘 0과 1이 서로 교차할 때를 카운트한다 만약 0011 와같이 1번 교차할때, 그리고 11001과 같이 2번 교차할때는 전부 1번이면 같게 할 수 있다. 0011001은 3번 교차, 001100110은 4번 교차하는데 2번으로 모든 숫자를 같게 할 수 있다 즉 ((교차하는 카운트) + 1)를 하고 2로 나눈 몫이 최소 횟수라고 볼 수 있다. 코드(출력) import sys input = sys.stdin.readline s = list(input()) cnt = 0 tmp = s[0] for i in range(1, len(s) - 1): #..
3. 변수와 메서드 3.1 선언위치에 따른변수의 종류 class Variables { int iv; // 인스턴수 변수 static cv; // 클래스 변수 void method() // 메서드 영역 { int lv = 0; //지역변수 } } 변수의 종류와 특징 변수의 종류 선언 위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갔을 때 인스턴수 변수 클래스 영역 인스턴스가 생성되었을 때 지역 변수 클래스 영역 이외의 영역 (메서드,생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 인스턴스 변수(instance variable) 클래그 영역에 선언, 클래스의 인스턴스를 생성할 때 만들어짐 인스턴스 변수의 값을 읽거나 저장하기 위해서는 먼저 인스턴스를 생성해야 한다 인스턴스는 독립적인 ..