분류 전체보기 43

[백준] 1157번 - 단어 공부 (PYTHON)

대소문자가 섞여있는 알파벳 문자열이 주어지고, 이 단어에서 가장 많이 사용된 알파벳을 알아내는 문제이다. 여기서 가장 많이 사용된 알파벳이 1개가 아닌 경우에는 ?를 출력한다. 풀이는 다음과 같다. str = input().upper() #대문자로 변경 ex) KIIJJJS tmp = list(set(str)) #중복 제거 ex) KIJS dics = [] for s in tmp: #인풋값별 문자반복 개수 구하기 ex) [1,2,3,1] cnt = str.count(s) dics.append(cnt) if dics.count(max(dics)) > 1: #최댓값 개수가 2개 이상이면 ? 출력 print('?') else: # ex) tmp[2] print(tmp[dics.index(max(dics))])..

[백준] 2675번 - 문자열 반복 (PYTHON)

먼저 추가로 입력받을 케이스의 수 n을 입력 받은 후, n개의 케이스를 각각 입력받아 계산값을 출력하는 문제이다. 각 케이스의 입력값은 "반복할횟수 반복할문자열" 의 모양으로 입력받는다.(두 값은 띄어쓰기로 구분) 풀이는 다음과 같다. t = input() cases = list() for i in range(int(t)): cases.append(input()) # 입력받은 케이스 수만큼 입력받은 값 리스트 담기 for lst in cases: # 각 케이스에서 반복횟수 / 반복할문자 분리 num = lst.split(' ')[0] str = lst.split(' ')[1] result = '' for item in list(str): result += item*int(num) # 각 문자열 반복횟수만..

[백준] 10809번 - 알파벳 찾기 (PYTHON)

소문자로만 이루어진 단어가 주어지면, a-z까지의 알파벳이 대해 주어진 단어에 포함되어있으면 해당 위치를, 없다면 -1을 출력하는 프로그램을 작성하는 문제이다. 먼저, 첫 번째 풀이이다. str = input() for i in range(97, 123): # 소문자 a-z까지 돌면서 체크 chk = -1 for index, s in enumerate(list(str)): # 입력받은 문자열에서 있는지 체크 if chr(i) == s: chk = index # 있으면 인덱스값 저장 break # 여러 번 있는 경우 첫번째 인덱스를 받아오기 위해 다음 알파벳으로 이동 print(chk, end=' ') 소문자로만 이루어진 문자열 str를 입력받아 a-z까지 돌면서 포함 여부와 인덱스를 추출하는 방식이다. ..

[백준] 11720번 - 숫자의 합 (PYTHON)

두 개의 숫자를 입력받아서 값을 계산하는 문제이다. 첫 번째로 숫자의 갯수를 입력받은 후, 두 번째로 공백없이 붙어있는 전체 숫자를 입력하면 이를 모두 다 더한 값을 출력하면 된다. 예를 들어 이런 식으로 출력되도록 만들면 된다. 풀이는 간단하다. 사실 두 번째 전체 숫자만 map함수를 이용하여 각 자릿수를 더하면 된다. n = input() all = input() print(sum(map(int, str(all))))

[백준] 11655번 - 아스키 코드 (PYTHON)

알파벳 소문자, 대문자, 숫자 0~9 중 하나가 주어지는 경우 그에 해당되는 아스키코드 값을 출력하는 프로그램이다. 이 문제는 아스키코드 변환 함수를 알고 있다면 바로 해결된다. 함수는 다음과 같다. 문자열 -> 아스키코드값: ord(입력값) 아스키코드값 -> 문자열: chr(입력값) 따라서, 위 함수를 이용하여 이렇게 풀어주면 된다. print(ord(str(input())))

[백준] 1065번 - 한수 (PYTHON)

한수라는 것은 어떤 양의 정수 x의 각 자리가 등차수열을 이룬다면, 그 수를 의미한다. 문제는 정수 n이 주어졌을 때 1~n 사이의 한수의 개수를 출력하는 것이다. 먼저 풀이는 다음과 같다. def han(n): result = 0 for i in range(1, n + 1): tmp = list(map(int, str(i))) # 정수 i를 자릿수별로 추출하여 리스트 담기 ex) [1,2,3] chk = diff = 0 if i < 100: # 1~99까지는 무조건 한수이므로 갯수+1 result += 1 else: # zip으로 리스트 안의 각 자릿수와 바로 다음자릿수 간의 차이 비교 for index, (a, b) in enumerate(zip(tmp, tmp[1:])): if index == 0:..

[백준] 4673번 - 셀프 넘버 (PYTHON)

이 문제는 조금 어려웠다. 일단 셀프넘버라는 걸 처음 들어봐서, 문제를 자세히 읽어야 했다. 10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램이다. 먼저, 첫 번째로 풀어본 방식은 다음과 같다. import math r_list = list(range(1, 10001)) # 1~10000까지의 숫자로 이루어진 리스트 생성 for i in range(1, 10001): lenght = len(str(i)) # 1~10000까지 각 숫자의 자릿수 추출 tmp = i for j in range(lenght): if j == 0: # 1의자리 수 더해주기 tmp = tmp + i else: tmp = tmp + math.trunc((i / pow(10, j))) # 10의자리 수 이상 더..

[ubuntu] 우분투 xrdp 원격접속하면 검은화면만 뜨는 문제

원래 잘 되던 원격접속에서 계정을 하나 새로 파서 원격접속을 시도했더니, 새로운 계정은 검은화면만 뜨고 접속이 안되는 문제가 발생했다. 그래서 접속이 잘 되는 계정에서 터미널을 열고 다음명령어로 startwm.sh 를 수정해준다. sudo nano /etc/xrdp/startwm.sh 이렇게 해서 nano편집기 화면이 열리면 중간쯤에 다음 내용을 추가해준다. unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR 이렇게 설정을 바꾸고 편집기를 컨트롤S로 저장하고 컨트롤X로 종료하면, 다음 명령어로 xrdp를 재시작해서 변경된 설정을 적용해주자! service xrdp restart 그런데 여기서 문제!!!! xrdp를 재시작하면서 전원이 재부팅되는데, 강제종료됐다가..

에러해결 2022.11.22

[linux] 우분투 계정 생성/sudo 권한 부여/비밀번호 변경/삭제

우분투에서 테스트용으로 계정을 만들어서 삭제까지 해보았다. 아래 명령어들은 root계정이나 sudo권한이 있는 계정에서 실행한다. # 계정 생성 - root계정인 경우 adduser 계정이름 # 계정 생성 - sudo권한 있는 계정인 경우 sudo adduser 계정이름 # 생성된 계정으로 이동되는지 확인 su 계정이름 # 비밀번호 변경하고 싶은 경우 sudo passwd 계정이름 위 명령어를 실행하면 group추가랑 user추가, 홈 디렉토리 생성, 비밀번호 설정이 한번에 진행된다. 비밀번호 입력창 다음에 나오는 full name, room number 같은 내용들은 입력 안하고 그냥 엔터쳐서 넘겨도 된다. 계정 비밀번호를 변경하고 싶은 경우에도 위의 명령어를 실행하면 된다. 다음으로 계정에 sudo ..

기타 2022.11.22