입력: 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다. 출력: 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
1트: VSCode에서만 돌려도 말도안되는 답이 나와서 제출하지 않음
정답 1트.. 내가 왜저랬을까요? n트 끝에 맞추었습니다..흐흐.. 처음에 input().split()만 하고 sum 함수를 사용했더니 str끼리 더할 수 없다는 메시지가 떴다. 그래서 print(i)를 해봤더니 ['1', '1']로 출력이 되었다. 이후 i = map(int,input().split())으로 수정하여 구할 수 있었다.
오답 정답 틀린 이유는 for문 밖에 처음에 0을 담아둔 변수를 만들지 않았기 때문이다.
정답 밑의 풀이를 쓰고 몇일 후 다시 시도해보았다. 문자열끼리 +를 써도 되니까 ,대신 +로 long과 int사이의 공백을 없애주었다. 그랬더니 맞추었다! 이틀전 이거도 맞다고 해줘야 되는거 아닌가? 왜 틀렸다고 하는지 모르겠는데.. 다른 분들의 코드를 찾아봐도 내가 왜틀렸는지는 모르겠네요
키워드를 알아야 풀 수 있는 문제네요.. 저는 기억이 안났습니다. > ord() : 문자의 아스키 코드값을 리턴하는 함수 > chr() : 아스키 코드값 입력으로 받아 그 코드에 해당하는 문자를 출력하는 함수
풀고나서 다른 분들 풀이를 보는데 같은 문제라도 다른 방법으로 푸시더라고요. 그 과정에서 혼자 코드를 보며 공부할 때보다 제가 만들어 둔 생각의 틀이 넓어지는 느낌이 들어서 좋습니다.
ord() : 문자의 아스키 코드값을 리턴하는 함수 > chr() : 아스키 코드값 입력으로 받아 그 코드에 해당하는 문자를 출력하는 함수 print(ord('a') : 97출력 print(chr(97) : 'a'출력 print(ord('z')) : 122출력 배운점 세로로 출력되는 값들을 가로로 출력하는 방법을 배웠습니다. print() 함수 뒤에 ...
오답 맞는줄 알았는데..ㅠㅠ 정답 틀린이유 use(걸리는시간)을 60으로 먼저 나눴으면 되는데 더한다음에 나눈다는 생각에 사로잡혀서 경우의 수가 많아졌고 그걸 다 생각하느라 if문을 나누기가 힘들었다.
문제의 시간 제한이 1초이다. 따라서 이렇게 a,b = map(int, input().split())으로 적으면 틀리게 된다. >sys.stdin.readline(): stdin은 standard input의 약자이다. input()에 비해 빠르다. 정답
while문을 1로 두면 계속 반복된다. (또는 True) > break를 써주면 멈춘다. 정답 알고나니 보이는 것들..
정답 틀린이유 처음엔 이렇게 처음 비스킷 공을 담는 q,w 변수를 만들지 않아서 잘못된 결과가 나왔다. 처음엔 이렇게만 했었는데, 결과에서 공의 번호가 중복되어 나왔다. 다시 생각해보니 위의 줄을 실행하면 이미 i번 비스킷 공의 번호가 j로 바뀌기 때문에 틀린 것을 깨달았다.
정답 배운점 for문을써서 평균을 구하려고 했는데, sum을 구한 다음 int로 나눠서 프린트하면 더 간략하게 풀 수 있었다.
정답 깨달은 점 처음엔 print()를 추가하지 않아서 모든 출력이 한줄에 써졌다. 그래서 제일 안의 for문 밖에 print()를 추가했더니 맞추었다.
처음에 사진 제대로 안보고 아스키코드로 푸는 줄 알고.. 삽질했다.. 다음에 한번 더 풀어봐야겠다
내 정답 보완할 점 굳이 if문을 쓸 필요가 없는게, 같아서 빼도 그냥 0이 출력된다.
정답 세 경우로 나누어서 풀었다. 내 풀이 (틀림) VSCode에서는 잘되는데 다시 보니까 앞에 빈칸이 하나 더 출력된다. 백준에서는 출력 형식이 잘못되었다고 뜬다.
정답 틀린이유 dictionary로 풀려고했는데, 그러면 count랑 index를 못써서 풀 수가 없었다. 상기 > list.count(i): list에 i가 몇개있는지 세어준다. > list.append(i): list에 i를 더해준다. > list.index(i): list에서 i의 위치를 찾는다.
정답 처음에 답이 안나온 이유 VSCode로 풀었는데 잘못된 출력이 나왔다. 그래서 문제를 다시 읽어보니 ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] 외의 알파벳도 세어주어야 했다. 그래서 for문에서 바꿔야 되는 부분을 아무 알파벳(난 o를 사용)으로 바꿔주고 전체 문자열의 len을 print했다.
sorted 함수 활용 > list를 제자리에서(in-place) 수정하는 내장 list.sort() 메서드 > iterable로부터 새로운 정렬된 리스트를 만드는 sorted() 내장 함수 > key=word.find: 알파벳 순서가 아닌, 첫 등장한 위치부터 중복되는 단어 나열
입력이 20개나 있어서 집착광공처럼 계속 제출했다.. 결국 맞추었다. 의지의 한국인 내 정답 다른 풀이들도 읽어봐야지
정답 배운점 처음엔 while문을 써야하나 생각했다가, for문에서 col loop를 밖에, 그 안에 row loop를 넣으면 출력순서를 바꿀 수 있다는 사실을 깨달았다.
정답 0으로 채워진 row100, col100의 배열을 만든다. 정사각형이 가로10, 세로10이기 때문에 입력받은 좌표에서 10씩 더해준다. 그리고 width, heigh에 해당하는 좌표를 1로 바꾸어준다. for loop를 다 돌면 1로 바뀐 부분을 세어준다. 깨달은점 처음에 넓이 n*100에서 겹치는 부분을 빼는 형태로 문제를 푸려고 하니까 너무 어려...
정답 다른풀이 dictionary를 쓰는대신 변수에 25,10,5,1을 넣어놓고 한번에 프린트할 수 있다.
n이 늘어날 때 마다 한 변의 점의 개수가 2^(n-1)씩 늘어나는 것을 볼 수 있다. 이것을 코드로 작성하면, 이렇게 풀 수 있다.
최소방 개수가 바뀌는 곳을 기준으로 나누어보면 규칙을 발견할 수 있다. 이를 기반으로 코드를 작성하면, 지나간 방 개수: total 최소 개수 방: count 변수에 처음엔 1,1을 담고 while문에서 total(지나간 방 개수)보다 지금 방 번호(n)가 같아지
어려웠던 점 v가 아니라 v-b를 해주어야 하는 이유가 잘 이해되지 않았다. v-b를 하는 이유는 끝에 도달했다가 밤에 b만큼 떨어져서 다음날 아침까지 계산될 수 있기 때문이다
배운점 > print(a, sep=" + "): a는 list a에 있는 원소를 순서대로 출력해준다. 다른 풀이 > join함수 > 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환함 > 1. ''.join(list): 리스트 내부 원소를 문자열로 합쳐서 반환 > 2. '구분자'.join(list): 리스트 내부 원소...
마지막에 if문을 한번 더 써서 -1 출력하는 것을 까먹었다.
수학문제는 고려해야할 부분이 많아서 한번에 맞추기가 힘든 것 같다
문제 설명 문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다. 꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다. 예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면 "abcghi"가 됩니다. 문...
메모리를 많이 쓰는 메소드 sort() input() for문 loop안에서 append() 정답 메모리가 부족할 때가 오지 않기를 바라고 있습니다..
오답 메모리초과로 틀렸다 VSCode로 실행했을 때, 답이 나오긴 하지만 for문이 3개나 있어서 메모리를 많이 사용한다. 그리고 내가 또 하나 간과한 점이 다 양수의 점들이라서 절대값을 취해주지 않아도 된다.. 정답
extend를 이용하면 쉽게 풀 수 있다.
풀이 정답
틀린이유 시간초과.. 그런데 시간초과 안나고 푸는 방법을 모르겠어요 ㅠㅠ > 입출력 빠른 순서 > sys.stdin.readline > raw_input() > input() 그냥 input()만 바꾸어도 된다. 허무하네
이분탐색(Binary Search)으로 푸는 문제이다. 시간제한(1초)이 있는 이유가 이분탐색을 이용해서 풀라는 의도인 것 같다.. 정답 l_1을 list로하면 시간초과가 걸린다. l_2는 for loop를 돌려야해서 iterable한 list로 해야한다. l_1을 set로 변경하면 시간제한을 통과할 수 있다! 야호 이분탐색 그럼 이제 이분탐색에 대해 ...
시간초과..ㅠ.ㅠ 오답 queue & deque list는 random access에 최적화된 자료구조이다. 따라서 pop,insert는 시간복잡도가 데이터 개수가 늘어나면 느려진다. 그래서 deque 자료구조를 사용하여 풀어야한다. > deque(double-ended queue): 양방향에서 데이터 추가&제거하는 자료구조 collections 모듈...
"입출력 순서" !!??? stack, queue를 떠올리고 pop으로 풀려고 해보자stack문제이면 list만들어서 list.pop()queue 문제이면 pop()
또간초과.. 부들부들.. 나의 풀이 고친 답 enumerate를 쓰면 list에서 뽑아올때보다 index i를 바로 구할 수 있어서 시간이 덜드는 것 같다! 시간제한 문제는 항상 힘들다 ㅠㅠ
배운 점 비트연산자 사용, zfill() > or: | > xor: ^ > and: & 정답
오답 정답 틀린이유 새로 얻은 콜라를 변수cola에 담았었는데, 여기서 b를 곱하지 않았다. 그리고 사실 이 변수도 필요없고 바로 처음 설정한 변수now에 담으면 된다.
깨달은 점 > 우선순위 1: 문자열 길이순서 sort(key = len) > 우선순위 2: 알파벳순서 이 경우에 sort()를 우선순위 2 -> 우선순위 1 순서로 해주어야한다. 정답
끝까지 lambda를 안쓰고 버텨왔지만.. 딕셔너리를 써봤지만 너무 복잡해져서 그냥 lambda를 배워봤습니다 정답 배운점 첫번째 요소에 대해서만 정렬한다.
문제 link 정답 > format(): 10진수->2진수 변환, 0이 사라지면 안되기 때문에 str로 바꿔준다 > 내림차순이라서 sort(reverse=True) > format(key=lambda x:(bi_cnt(x), x) 정렬1순위는 1의 개수, 2순위는 원래 10진수 ㅌ
x[1] 끝나는 시간이 더 빠른 것을 선택한다.. lambda 활용능력을 더 길러야 할 것 같다..
지금까지 만난 자료구조 문제중에 제일 어려웠다 ㅠㅠ 구문풀이 n개의 입력을 list에 추가한다. cnt는 stack에 넣은 숫자이고 ans는 +와-를 저장할 곳이고 tes는 출력 여부를 테스트하는 곳이다. n을 하나씩 꺼낸다. cnt=1 에서 n보다 cnt가 같게될 때 까지 +를 ans에 더한다. 그리고 스택에는 cnt=1,2,..n까지를 추가한다....
deque 문제를 풀 때 리스트를 먼저 만들어서 틀렸었는데, 지난 주의 코테에서도 같은 실수를 범해서 문제를 풀지 못했다..ㅠㅠ 지금이라도 소 잃고 외양간 고치는 심정으로 비슷한 문제들을 찾아서 풀어본다. 백준 1158번 circ 덱이 빌 때까지 반복한다. k-1번 동안 덱의 왼쪽에서 오른쪽으로 사람들을 이동시킨다. k번째 사람을 덱에서 제거하고, 제거...
lambda에 익숙해지도록 노력해야겠다 ㅠㅠ
문제 link 정답 5와 3의 조합으로 표현할 수 없다면 -1을 출력한다. while loop n % 5 == 0 n이 5로 나누어 떨어지면 cnt += int(n//5) n을 5로 나눈 몫을 cnt에 더하고 cnt를 print한 후 break한다. n이 5로 나누어떨어지지 않으면, n -= 3n에서 3을 빼고 cnt += 1cnt에 1을 더한다. ...
EOFError: End Of File로 python input이 끝날때 까지 받고 종료하는 조건이다. 백준 11719번
백준 1094번 막대기 문제 64는 $$2^6$$이기 때문에 stick은 결국 2의 제곱수를 가장 적게 사용해서 만들어진다.
백준 1049번 기타줄 틀린이유 처음에 경우의 수 하나만 고려해서 쉽누 ㅋㅋ 하고 제출했다가 틀렸다. 생각해야하는 경우가 하나더 있었다.. 근데 또 틀렸다 왜냐하면 하나 더 있는거에서 하나 더 있어서 총 세가지의 경우의 수를 고려해야했다. 정답 처음엔 바로 (n//6)bundle[0]+(n%6)money[0]이걸 프린트해서 틀렸다 ㅠㅠ 그리고 문제가 길면...
if stk else \[-1]를 추가하지 않았다.아쉽다!
문제 링크
문제링크문제 링크 계단의 수 n과 각 계단의 점수(dp)를 입력받는다.기저 조건 초기화를 위해서 n=1이나 n=2일 때는 바로 변환한다(예외처리)dp1,dp2,dp3을 초기화한다.점화식을 적용해서 dpi를 i-2에서 올라온 경우랑 i-1에서 올라온 경우 중에 최대값으로
문제 링크 메모리: 10.1 MB, 시간: 0.01 ms코딩테스트 연습 > 코딩테스트 입문정확성: 100.0합계: 100.0 / 100.02024년 11월 22일 15:26:11출처: 프로그래머스 코딩 테스트 연습, https://school.programme
문제 링크 메모리: 32412 KB, 시간: 32 msinput().strip()을 사용해서 입력을 int가 아닌 str로 처리하기 위해 줄바꿈 문자나 공백을 제거하여 문자열로 처리하기 위한 코드이다.펠린드롬 확인을 위해 num::-1로 문자열을 뒤집고 num == n